diff --git a/scribeengine/controllers/media.py b/scribeengine/controllers/media.py
index 38a431a..b71e112 100644
--- a/scribeengine/controllers/media.py
+++ b/scribeengine/controllers/media.py
@@ -22,6 +22,7 @@
 
 import os
 import logging
+from pprint import pprint
 
 from scribeengine.lib.base import *
 from scribeengine.lib import utils
@@ -35,12 +36,34 @@ class MediaController(BaseController):
     def _get_directories(self, parent=None, tree={}):
         if not parent:
             parent = config[u'paths.media']
+        parent = os.path.abspath(parent)
+        dir_start = os.path.split(parent)[1]
+        tree[dir_start] = {}
+        for root, dirs, files in os.walk(parent):
+            root_parts = root.split(os.sep)
+            root_start = u''
+            for root_part in root_parts:
+                if root_part == dir_start:
+                    root_start = root_part
+                    break
+
+            for dirpath in dirs:
+                root_parts =
+                full_dirpath = os.path.join(root, dirpath)
+                tree[full_dirpath] = {}
+
         for dirpath in os.listdir(parent):
-            if os.path.isdir(dirpath):
-                tree[os.path.abspath(dirpath)] = {u'path': dirpath, u'children': {}}
-                self._get_directories(os.path.abspath(dirpath),
-                    tree[os.path.abspath(dirpath)][u'children'])
+            full_dirpath = os.path.abspath(dirpath)
+            print 'path:', full_dirpath
+            if os.path.isdir(full_dirpath):
+                tree[full_dirpath] = {
+                    u'path': dirpath,
+                    u'children': self._get_directories(full_dirpath)
+                }
+        return tree
 
     def index(self):
         c.directories = self._get_directories()
-        return render(u'/media/index.html')
+        pprint(c.directories)
+        return c.directories
+        #return render(u'/media/index.html')