from nepi.resources.linux.application import LinuxApplication
 from nepi.resources.linux.node import OSType
 from nepi.util.timefuncs import tnow, tdiffsec
-from nepi.resources.ns3.simulator import NS3Simulator
+from nepi.resources.ns3.ns3simulator import NS3Simulator
+from nepi.resources.linux.ns3.ns3client import LinuxNS3Client
 
 import os
 
 @clsinit_copy
 class LinuxNS3Simulator(LinuxApplication, NS3Simulator):
-    _rtype = "LinuxSimulator"
+    _rtype = "LinuxNS3Simulator"
 
     @classmethod
     def _register_attributes(cls):
             "Sets the CCND_MAX_RTE_MICROSEC environmental variable. ",
             flags = Flags.ExecReadOnly)
 
-        keystore = Attribute("keyStoreDirectory",
-            "Sets the CCND_KEYSTORE_DIRECTORY environmental variable. ",
-            flags = Flags.ExecReadOnly)
-
         cls._register_attribute(debug)
-        cls._register_attribute(port)
-
-    @classmethod
-    def _register_traces(cls):
-        log = Trace("log", "CCND log output")
-        status = Trace("status", "ccndstatus output")
-
-        cls._register_trace(log)
-        cls._register_trace(status)
 
     def __init__(self, ec, guid):
-        super(LinuxCCND, self).__init__(ec, guid)
-        self._home = "ccnd-%s" % self.guid
-        self._version = "ccnx"
+        super(LinuxApplication, self).__init__(ec, guid)
+        super(NS3Simulator, self).__init__()
 
-    @property
-    def version(self):
-        return self._version
+        self._home = "ns3-simu-%s" % self.guid
+        
+        # TODO: Create socket!!
+        self._client = LinuxNS3Client(socket_name)
 
-    @property
-    def path(self):
-        return "PATH=$PATH:${BIN}/%s/" % self.version 
 
     def do_deploy(self):
         if not self.node or self.node.state < ResourceState.READY:
 
         rtype = tid.GetName()
         category = tid.GetGroupName()
 
+        base_class_import = "from nepi.resources.ns3.ns3base import NS3Base"
+        base_clas = "NS3Base"
+ 
         classname = rtype.replace("ns3::", "NS3").replace("::","")
         uncamm_rtype = re.sub('([a-z])([A-Z])', r'\1-\2', rtype).lower()
         short_rtype = uncamm_rtype.replace("::","-")
 
         d = os.path.dirname(os.path.realpath(__file__))
-        ftemp = open(os.path.join(d, "templates", "rm_template.txt"), "r")
+        ftemp = open(os.path.join(d, "templates", "resource_manager_template.txt"), "r")
         template = ftemp.read()
         ftemp.close()
 
                 replace("<RTYPE>", rtype). \
                 replace("<ATTRIBUTES>", attributes). \
                 replace("<TRACES>", traces). \
+                replace("<BASE_CLASS_IMPORT>", base_class_import). \
+                replace("<BASE_CLASS>", base_class). \
                 replace("<SHORT-RTYPE>", short_rtype)
 
         fname = uncamm_rtype.replace('ns3::', ''). \
 
 from nepi.execution.trace import Trace, TraceAttr
 from nepi.execution.resource import ResourceManager, clsinit_copy, \
         ResourceState, reschedule_delay
-from nepi.resources.ns3.ns3_base import NS3Base
+<BASE_CLASS_IMPORT>
 
 @clsinit_copy
-class <CLASS_NAME>(NS3Base):
+class <CLASS_NAME>(<BASE_CLASS>):
     _rtype = "<RTYPE>"
 
     @classmethod
     def __init__(self, ec, guid):
         super(<CLASS_NAME>, self).__init__(ec, guid)
         self._home = "<SHORT-RTYPE>-%s" % self.guid
-        # TODO!
-        self._version = None
-
-    @property
-    def version(self):
-        return self._version
-