diff --git a/src/__init__.py b/pymbolic/__init__.py
similarity index 100%
rename from src/__init__.py
rename to pymbolic/__init__.py
diff --git a/src/algorithm.py b/pymbolic/algorithm.py
similarity index 100%
rename from src/algorithm.py
rename to pymbolic/algorithm.py
diff --git a/src/compiler.py b/pymbolic/compiler.py
similarity index 100%
rename from src/compiler.py
rename to pymbolic/compiler.py
diff --git a/src/functions.py b/pymbolic/functions.py
similarity index 100%
rename from src/functions.py
rename to pymbolic/functions.py
diff --git a/src/mapper/__init__.py b/pymbolic/mapper/__init__.py
similarity index 97%
rename from src/mapper/__init__.py
rename to pymbolic/mapper/__init__.py
index d54d1dafd9c50b5a509196cde2e7fa14e7578740..7817546eb39367688bbf28ff7666083351159899 100644
--- a/src/mapper/__init__.py
+++ b/pymbolic/mapper/__init__.py
@@ -195,7 +195,9 @@ class IdentityMapperBase(object):
         return result
 
     def map_common_subexpression(self, expr, *args, **kwargs):
-        return expr.__class__(self.rec(expr.child, *args, **kwargs))
+        return expr.__class__(
+                self.rec(expr.child, *args, **kwargs),
+                **expr.get_extra_properties())
 
 
 
diff --git a/src/mapper/c_code.py b/pymbolic/mapper/c_code.py
similarity index 100%
rename from src/mapper/c_code.py
rename to pymbolic/mapper/c_code.py
diff --git a/src/mapper/collector.py b/pymbolic/mapper/collector.py
similarity index 100%
rename from src/mapper/collector.py
rename to pymbolic/mapper/collector.py
diff --git a/src/mapper/constant_folder.py b/pymbolic/mapper/constant_folder.py
similarity index 100%
rename from src/mapper/constant_folder.py
rename to pymbolic/mapper/constant_folder.py
diff --git a/src/mapper/dependency.py b/pymbolic/mapper/dependency.py
similarity index 100%
rename from src/mapper/dependency.py
rename to pymbolic/mapper/dependency.py
diff --git a/src/mapper/differentiator.py b/pymbolic/mapper/differentiator.py
similarity index 100%
rename from src/mapper/differentiator.py
rename to pymbolic/mapper/differentiator.py
diff --git a/src/mapper/evaluator.py b/pymbolic/mapper/evaluator.py
similarity index 100%
rename from src/mapper/evaluator.py
rename to pymbolic/mapper/evaluator.py
diff --git a/src/mapper/expander.py b/pymbolic/mapper/expander.py
similarity index 100%
rename from src/mapper/expander.py
rename to pymbolic/mapper/expander.py
diff --git a/src/mapper/flattener.py b/pymbolic/mapper/flattener.py
similarity index 100%
rename from src/mapper/flattener.py
rename to pymbolic/mapper/flattener.py
diff --git a/src/mapper/flop_counter.py b/pymbolic/mapper/flop_counter.py
similarity index 100%
rename from src/mapper/flop_counter.py
rename to pymbolic/mapper/flop_counter.py
diff --git a/src/mapper/stringifier.py b/pymbolic/mapper/stringifier.py
similarity index 100%
rename from src/mapper/stringifier.py
rename to pymbolic/mapper/stringifier.py
diff --git a/src/mapper/substitutor.py b/pymbolic/mapper/substitutor.py
similarity index 100%
rename from src/mapper/substitutor.py
rename to pymbolic/mapper/substitutor.py
diff --git a/src/parser.py b/pymbolic/parser.py
similarity index 100%
rename from src/parser.py
rename to pymbolic/parser.py
diff --git a/src/polynomial.py b/pymbolic/polynomial.py
similarity index 100%
rename from src/polynomial.py
rename to pymbolic/polynomial.py
diff --git a/src/primitives.py b/pymbolic/primitives.py
similarity index 99%
rename from src/primitives.py
rename to pymbolic/primitives.py
index 14b066fabb321f0c4f3c8e5a3961995a35b34613..fe1c2b3f9846303bf24d6eee493c67ea35b21c8e 100644
--- a/src/primitives.py
+++ b/pymbolic/primitives.py
@@ -548,6 +548,9 @@ class CommonSubexpression(Expression):
         return (other.__class__ == self.__class__
                 and other.child == self.child)
 
+    def get_extra_properties(self):
+        return {}
+
     def get_mapper_method(self, mapper): 
         return mapper.map_common_subexpression
 
diff --git a/src/rational.py b/pymbolic/rational.py
similarity index 100%
rename from src/rational.py
rename to pymbolic/rational.py
diff --git a/src/traits.py b/pymbolic/traits.py
similarity index 100%
rename from src/traits.py
rename to pymbolic/traits.py
diff --git a/setup.py b/setup.py
index cea5c8513d9c6b94345bc5ed95896021aea2fd42..f0d0dd608f558916d380350691992a1dce766e06 100644
--- a/setup.py
+++ b/setup.py
@@ -52,7 +52,6 @@ setup(name="pymbolic",
       install_requires=[
           'pytools>=2'
           ],
-      package_dir={"pymbolic": "src", "pymbolic.mapper":"src/mapper"},
 
       zip_safe=False,
      )