diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..28bb247
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+from distutils.core import setup
+import os
+
+
+def _do_list_dir(top_dir, base_dir):
+    top_dir = os.path.realpath(top_dir)
+    print "top : ", top_dir
+    base_dir = os.path.realpath(base_dir)
+    all_files = os.listdir(base_dir)
+    modules = []
+    for f in all_files:
+        fname = os.path.join(base_dir, f)
+        if os.path.isfile(fname):
+            ext = f.split('.')[-1]
+            if ext == 'py':
+                p = base_dir.find(top_dir)
+                mod = os.path.join(base_dir[p + len(top_dir) + 1:], f)
+                modules.append(mod)
+        elif os.path.isdir(fname):
+            modules += _do_list_dir(top_dir, fname)
+    return modules
+
+
+def find_all_dist_module():
+    base_dir = 'supwisdom'
+    return _do_list_dir(base_dir, base_dir)
+
+#print find_all_dist_module()
+
+setup(
+    name='swtools',
+    version="0.1",
+    description="Supwisdom python libraries",
+    author='Cheng Tang',
+    author_email='cheng.tang@supwisdom.com',
+    platforms=['All'],
+    packages=['supwisdom', 'supwisdom.protocol']
+    )
