diff --git a/plstackapi/importer/plclassic/__init__.py b/plstackapi/importer/plclassic/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/plstackapi/importer/plclassic/__init__.py
diff --git a/plstackapi/importer/plclassic/importer.py b/plstackapi/importer/plclassic/importer.py
new file mode 100644
index 0000000..88ea1b1
--- /dev/null
+++ b/plstackapi/importer/plclassic/importer.py
@@ -0,0 +1,43 @@
+import xmlrpclib
+from importer.planetstack.role_importer import RoleImporter
+from importer.planetstack.site_importer import SiteImporter
+from importer.planetstack.user_importer import UserImporter
+from importer.planetstack.slice_importer import SliceImporter
+from importer.planetstack.sliver_importer import SliverImporter
+
+
+class Call:
+    def __init__(self, callable, auth):
+        self.callable = callable
+        self.auth = auth
+
+    def __call__(self, *args, **kwds):
+        a = [auth] + args
+        return self.callable(*a)
+
+class API():
+    def __init__(self):
+        self.auth = {}
+        self.server = xmlrpclib.ServerProxy("URL", allow_none=True)
+
+    def __getattr__(self, name):         
+        return Call(getattr(self.server, name), self.auth) 
+
+class Importer: 
+
+    def __init__(self):
+        self.api = API()
+        self.roles = RoleImporter(self)
+        self.sites = SiteImporter(self)
+        self.users = UserImporter(self)
+        self.slices = SliceImporter(self)
+        self.slivers = SliverImporter(self)
+
+    def run(self):
+        self.roles.run()
+        self.sites.run()
+        self.users.run()
+        self.slices.run()
+        self.slivers.run()           
+
+
diff --git a/plstackapi/importer/plclassic/role_importer.py b/plstackapi/importer/plclassic/role_importer.py
new file mode 100644
index 0000000..7404ce3
--- /dev/null
+++ b/plstackapi/importer/plclassic/role_importer.py
@@ -0,0 +1,21 @@
+from PLC.Roles import Roles
+from model import Role
+
+class RoleImporter:
+
+    def __init__(self, importer):
+        self.importer = importer
+        self.roles = {}
+
+    def run(self):
+        roles = self.importer.api.GetRoles()
+        db_roles =  Role.objects.all()
+        db_roles_list = [db_role['name'] for db_role in db_roles]
+        for role in roles:
+            if role['name'] not in db_roles_list:
+                new_role = Role(name=role['name'])
+                new_role.save()
+            self.roles[role['role_id']] = role
+
+          
+
diff --git a/plstackapi/importer/plclassic/site_importer.py b/plstackapi/importer/plclassic/site_importer.py
new file mode 100644
index 0000000..efd3933
--- /dev/null
+++ b/plstackapi/importer/plclassic/site_importer.py
@@ -0,0 +1,27 @@
+from PLC.Sites import Sites
+from models import Site
+
+class SiteImporter:
+
+    def __init__(self, importer):
+        self.importer = importer
+        self.sites = {}
+
+    def run(self):
+        sites = Sites(self.importer.api)
+        db_sites = Site.objects.all()
+        db_site_names = [s['login_base'] for s in db_sites]         
+        for site in sites:
+            if site['login_base'] not in db_site_names:
+                new_site = Site(name=site['name'],
+                                site_url=site['url'],
+                                enabled=site['enabled'],
+                                longitude=site['longitude'],
+                                latitude=site['latitude'],
+                                is_public=site['is_public'],
+                                abbreviated_name=site['abbreviated_name'])
+                new_site.save()
+            self.sites[site['site_id']] = site
+
+          
+
diff --git a/plstackapi/importer/plclassic/slice_importer.py b/plstackapi/importer/plclassic/slice_importer.py
new file mode 100644
index 0000000..02247f1
--- /dev/null
+++ b/plstackapi/importer/plclassic/slice_importer.py
@@ -0,0 +1,25 @@
+from PLC.Slices import Slices
+from models import Slice
+
+class SliceImporter:
+
+    def __init__(self, importer):
+        self.importer = importer
+        self.slices = {}
+
+    def run(self):
+        slices = Slices(self.importer.api)
+        db_slices = Slice.objects.all()
+        slice_names = [s['name'] for s in db_slices]
+        for slice in slices:
+            if slice['name'] not in slice_names:
+                new_slices = Slice(name=slice['name'],
+                                   instantiation=slice['instantiation'],
+                                   omf_friendly = False,
+                                   description = slice['description'],
+                                   slice_url = slice['url'])
+                new_slice.save();
+            self.slices[slice['slice_id']] = slice
+
+          
+
diff --git a/plstackapi/importer/plclassic/sliver_importer.py b/plstackapi/importer/plclassic/sliver_importer.py
new file mode 100644
index 0000000..3bce228
--- /dev/null
+++ b/plstackapi/importer/plclassic/sliver_importer.py
@@ -0,0 +1,14 @@
+from PLC.Nodes import Nodes
+
+class SliverImporter:
+
+    def __init__(self, importer):
+        self.importer = importer
+        self.slivers = {}
+
+    def run(self):
+        nodes = Nodes(self.importer.api)
+        for node in nodes:
+            slice_id in node['slice_ids']:
+                self.slivers[(slice['slice_id'], node['node_id'])] = slice          
+
diff --git a/plstackapi/importer/plclassic/user_importer.py b/plstackapi/importer/plclassic/user_importer.py
new file mode 100644
index 0000000..7476967
--- /dev/null
+++ b/plstackapi/importer/plclassic/user_importer.py
@@ -0,0 +1,35 @@
+from PLC.Persons import Persons
+from models import User
+
+class UserImporter:
+
+    def __init__(self, importer):
+        self.importer = importer
+        self.users = {}
+
+    def run(self):
+        users = Persons(self.importer.api)
+        db_users = User.objects.all()
+        usernames = [u['email'] for u in db_users]     
+        for user in users:
+            if user['email'] not in usernames:
+                new_user = User(firstname=user['first_name'],
+                                lastname=user['last_name'],
+                                email=user['email'],
+                                phone=user['phone'],
+                                user_url = user['url'],
+                                site = user['sites_ids'][0])
+                new_user.save()
+                self.save_site_privs(user) 
+                self.save_slice_privs(user) 
+            self.users[user['person_id']] = user
+
+    def save_site_privs(self, user):
+        # update site roles
+        pass
+
+    def save_slice_privs(self, user):
+        # update slice roles
+        pass
+          
+
