diff --git a/CHANGES b/CHANGES
index 5936f1bc1e962bec507481b1da5f109633705366..75be870ae7499cd333e499e404e5352cdd05907e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
 0.1.5
 - AST expression generation - added in just about everything 
   expression-wise from the AST module  [ticket:26]
+- AST parsing, properly detects imports of the form "import foo.bar"
+  [ticket:27]
   
 0.1.4
 - got defs-within-defs to be cacheable
diff --git a/lib/mako/ast.py b/lib/mako/ast.py
index bea587d2d00c89fb13d9add07e32b55a6e9c1a70..5556269cf422251386526ce1c3332871fe21cd7b 100644
--- a/lib/mako/ast.py
+++ b/lib/mako/ast.py
@@ -88,7 +88,7 @@ class PythonCode(object):
                     if alias is not None:
                         self._add_declared(alias)
                     else:
-                        self._add_declared(mod)
+                        self._add_declared(mod.split('.')[0])
             def visitFrom(self, node, *args):
                 for (mod, alias) in node.names:
                     if alias is not None:
diff --git a/test/ast.py b/test/ast.py
index 31680a2b4851103ea6ae964ec525e2b39477bb72..f19c103a33cd0c7b24f9d43284e82be07d33cd91 100644
--- a/test/ast.py
+++ b/test/ast.py
@@ -105,7 +105,15 @@ print z
         parsed = ast.PythonCode(code, 0, 0, None)
         assert parsed.undeclared_identifiers == util.Set(['z'])
         assert parsed.declared_identifiers == util.Set(['lala'])
-
+    
+    def test_locate_identifiers_7(self):
+        code = """
+import foo.bar
+"""
+        parsed = ast.PythonCode(code, 0, 0, None)
+        assert parsed.declared_identifiers == util.Set(['foo'])
+        assert parsed.undeclared_identifiers == util.Set()
+        
     def test_no_global_imports(self):
         code = """
 from foo import *
@@ -189,7 +197,7 @@ import x as bar
             local_dict={}
             astnode = parse(code)
             newcode = ast.ExpressionGenerator(astnode).value()
-            print code, newcode
+            #print code, newcode
             assert(eval(code, local_dict)) == eval(newcode, local_dict), "%s != %s" % (code, newcode)
 
 if __name__ == '__main__':