diff --git a/example/example.pyx b/example/example.pyx
new file mode 100644
index 0000000000000000000000000000000000000000..4dcfb73e3bcb6adfd9e60c79597c93fd2bd57363
--- /dev/null
+++ b/example/example.pyx
@@ -0,0 +1,2 @@
+def test(x, y):
+    return x+y
diff --git a/example/setup.py b/example/setup.py
index ac57f4d215e8c54d95eb98953e8927fd0551c06c..1f05629d2bf9975450fe12189556252f29bd73a3 100644
--- a/example/setup.py
+++ b/example/setup.py
@@ -1,23 +1,27 @@
 from setuptools import setup, find_packages
 
 from snakehouse import Multibuild, build
+from setuptools import Extension
 
+# note that you can include standard Extension classes in this list, those won't be touched
+# and will be directed directly to Cython.Build.cythonize()
 cython_multibuilds = [
     Multibuild('example_module', ['example_module/test.pyx', 'example_module/test2.pyx',
                                   'example_module/test3/test3.pyx',
-                                  'example_module/test_n.c'])
+                                  'example_module/test_n.c']),
+    Extension('example', ['example.pyx'])
 ]
 
 # first argument is used directly by snakehouse, the rest and **kwargs are passed to
-# Cython.Build.cythonize
+# Cython.Build.cythonize()
 ext_modules = build(cython_multibuilds,
-                        compiler_directives={
-                            'language_level': '3',
-                        })
+                    compiler_directives={
+                       'language_level': '3',
+                    })
 
 setup(name='example_module',
       version='0.1',
-      packages=find_packages(include=['example_module']),
+      packages=['example_module', 'example'],
       install_requires=[
             'Cython', 'snakehouse'
       ],
diff --git a/example/tests/test_test.py b/example/tests/test_test.py
index b60c3cfe0144c6d56a4c1277ffc1131b7b11a3a2..fdd367512b5014cd1a78b236f9432cb2c0a749d8 100644
--- a/example/tests/test_test.py
+++ b/example/tests/test_test.py
@@ -1,10 +1,14 @@
 from example_module.test import times_two
 from example_module.test2 import times_three, times_five
 from example_module.test3.test3 import times_four
+from example import test
 import unittest
 
 
 class TestExample(unittest.TestCase):
+    def test_test(self):
+        self.assertEqual(test(2, 3), 5)
+
     def test_five(self):
         self.assertEqual(times_five(2), 10)
 
diff --git a/snakehouse/build.py b/snakehouse/build.py
index 2f2900c9f3e9f42d3d528c99f63ff8ed3b9efcf7..cfc96143daa2bbb389c7315f424b338a46d83b4d 100644
--- a/snakehouse/build.py
+++ b/snakehouse/build.py
@@ -1,7 +1,15 @@
+import typing as tp
 from Cython.Build import cythonize
+from setuptools import Extension
+from .multibuild import Multibuild
 
 
-def build(extensions, *args, **kwargs):
-    for multibuild in extensions:
-        multibuild.generate()
-    return cythonize([ext.for_cythonize() for ext in extensions], *args, **kwargs)
+def build(extensions: tp.List[tp.Union[Multibuild, Extension]], *args, **kwargs):
+    returns = []
+    for multi_build in extensions:
+        if isinstance(multi_build, Extension):
+            returns.append(multi_build)
+        else:
+            multi_build.generate()
+            returns.append(multi_build.for_cythonize())
+    return cythonize(returns, *args, **kwargs)