diff --git a/main.py b/sqlite-to-cpp/__init__.py
old mode 100755
new mode 100644
similarity index 98%
rename from main.py
rename to sqlite-to-cpp/__init__.py
index b99ad9aeb0d2b3bf5176353bb6c43e4fbb36f70b..740bcafc69cba5e3e7a8e840cd574101e0475443
--- a/main.py
+++ b/sqlite-to-cpp/__init__.py
@@ -1,7 +1,5 @@
-#!/usr/bin/env python3
-
 from dataclasses import dataclass
-from exit_codes import SQL_ERROR
+from .exit_codes import SQL_ERROR
 
 import argparse
 import gettext
@@ -122,7 +120,7 @@ def enum_out_operator_declaration(table):
         """))
 
 
-def main():
+def entry():
     """Entry point of program."""
     gettext.bindtextdomain(PRGR_NAME, 'translation')
     gettext.textdomain('translation')
@@ -210,6 +208,5 @@ def main():
 
     return return_value
 
-
-if __name__ == '__main__':
-    sys.exit(main())
+def main():
+    sys.exit(entry())
diff --git a/sqlite-to-cpp/__main__.py b/sqlite-to-cpp/__main__.py
new file mode 100644
index 0000000000000000000000000000000000000000..c7c70d0be2f94f22b62f5b9fea21536367fe62e8
--- /dev/null
+++ b/sqlite-to-cpp/__main__.py
@@ -0,0 +1,4 @@
+from . import main
+
+if __name__ == '__main__':
+    main()
diff --git a/exit_codes.py b/sqlite-to-cpp/exit_codes.py
similarity index 100%
rename from exit_codes.py
rename to sqlite-to-cpp/exit_codes.py