diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java
new file mode 100644
index 0000000..6bf43c5
--- /dev/null
+++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java
@@ -0,0 +1,83 @@
+package de.c3ma.ollo.mockup;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InterruptedIOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.nio.file.Files;
+
+import org.luaj.vm2.LuaFunction;
+import org.luaj.vm2.LuaTable;
+import org.luaj.vm2.LuaValue;
+import org.luaj.vm2.lib.OneArgFunction;
+import org.luaj.vm2.lib.TwoArgFunction;
+import org.luaj.vm2.lib.ZeroArgFunction;
+
+import de.c3ma.ollo.LuaSimulation;
+
+/**
+ * created at 29.12.2017 - 01:29:40
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */
+public class ESP8266Net extends TwoArgFunction {
+    
+    public static final int PORTNUMBER_OFFSET = 4000;
+    
+    @Override
+    public LuaValue call(LuaValue modname, LuaValue env) {
+        env.checkglobals();
+        final LuaTable net = new LuaTable();
+        net.set("createServer", new CreateServerFunction());
+        
+        //FIXME net.set("send", new SendFunction());
+        net.set("TCP", "TCP");
+        env.set("net", net);
+        env.get("package").get("loaded").set("net", net);        
+        return net;
+    }
+    
+    private class CreateServerFunction extends OneArgFunction {
+
+        @Override
+        public LuaValue call(LuaValue arg) {
+            final LuaTable srv = new LuaTable();
+            srv.set("listen", new ListenFunction());
+            return srv;
+        }
+        
+    }
+    
+    private class ListenFunction extends TwoArgFunction {
+
+        @Override
+        public LuaValue call(LuaValue port, LuaValue function) {
+            int portnumber = port.checkint();
+            LuaFunction onListenFunction = function.checkfunction();
+
+            System.out.println("[Net] listening " + portnumber + "(simulating at " + (PORTNUMBER_OFFSET+ portnumber) + ")");
+            
+            try
+            {
+                ServerSocket serverSocket = new ServerSocket(PORTNUMBER_OFFSET+portnumber);
+                serverSocket.setSoTimeout( 60000 ); // Timeout after one minute
+            
+                Socket client = serverSocket.accept();
+                
+            }
+            catch ( InterruptedIOException iioe )
+            {
+              System.err.println( "Timeout nach einer Minute!" );
+            } catch (IOException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            System.out.println("[Net] server running");
+            return LuaValue.valueOf(true);
+        }
+        
+    }
+}
diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java
new file mode 100644
index 0000000..e8f5446
--- /dev/null
+++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java
@@ -0,0 +1,78 @@
+package de.c3ma.ollo.mockup;
+
+import org.luaj.vm2.Globals;
+import org.luaj.vm2.LuaFunction;
+import org.luaj.vm2.LuaTable;
+import org.luaj.vm2.LuaValue;
+import org.luaj.vm2.Varargs;
+import org.luaj.vm2.lib.OneArgFunction;
+import org.luaj.vm2.lib.ThreeArgFunction;
+import org.luaj.vm2.lib.TwoArgFunction;
+import org.luaj.vm2.lib.VarArgFunction;
+import org.luaj.vm2.lib.ZeroArgFunction;
+
+import de.c3ma.ollo.LuaThreadTmr;
+
+/**
+ * created at 29.12.2017 - 00:07:22
+ * creator: ollo
+ * project: Time Emulation
+ * 
+ * Simulating the following modules:
+ * Sntp
+ * rtctime
+ * 
+ * $Id: $
+ * @author ollo
+ */
+public class ESP8266Time extends TwoArgFunction {
+    
+    @Override
+    public LuaValue call(LuaValue modname, LuaValue env) {
+        env.checkglobals();
+        final LuaTable sntp = new LuaTable();
+        sntp.set("sync", new SyncFunction());
+        env.set("sntp", sntp);
+        final LuaTable rtctime = new LuaTable();
+        rtctime.set("get", new GetFunction());
+        env.set("rtctime", rtctime);
+        env.get("package").get("loaded").set("sntp", sntp);
+        env.get("package").get("loaded").set("rtctime", rtctime);
+                
+        return sntp;
+    }
+
+    private class SyncFunction extends ThreeArgFunction {
+
+        @Override
+        public LuaValue call(LuaValue server, LuaValue callbackSuccess, LuaValue callbackFailure) {
+            String serverName = server.checkjstring();
+            LuaFunction cb = callbackSuccess.checkfunction();
+            System.out.println("[SNTP] sync " + serverName);
+            
+            /*FIXME also make it possible to simulate the time */
+            int seconds = (int) (System.currentTimeMillis() / 1000);
+            int useconds = (int) (System.currentTimeMillis() % 1000);
+            cb.call(LuaValue.valueOf(seconds), LuaValue.valueOf(useconds), LuaValue.valueOf(serverName));
+            
+            return LuaValue.valueOf(true);
+        }
+        
+    }
+    
+    private class GetFunction extends ZeroArgFunction {
+
+        @Override
+        public LuaValue call() {
+            LuaValue[] v = new LuaValue[2];
+            /*FIXME also make it possible to simulate the time */
+            int seconds = (int) (System.currentTimeMillis() / 1000);
+            int useconds = (int) (System.currentTimeMillis() % 1000);
+            v[0] = LuaValue.valueOf(seconds);
+            v[1] = LuaValue.valueOf(useconds);
+            return LuaValue.varargsOf(v).arg1();
+        }
+        
+    }
+    
+}