diff --git a/setup.py b/setup.py
deleted file mode 100644
index 86a1c8afd7e90b0788d8ad1c15ef2573c9ef4e56..0000000000000000000000000000000000000000
--- a/setup.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2019-2020 Thomas Kramer.
-# SPDX-FileCopyrightText: 2022 Thomas Kramer
-#
-# SPDX-License-Identifier: CERN-OHL-S-2.0
-
-from setuptools import setup, find_packages
-
-
-def readme():
-    with open("README.md", "r") as f:
-        return f.read()
-
-
-setup(name='lclayout',
-      version='0.0.16',
-      description='CMOS standard cell layout generator.',
-      long_description=readme(),
-      long_description_content_type="text/markdown",
-      keywords='cmos cell generator layout klayout vlsi asic',
-      classifiers=[
-          # 'License :: OSI Approved :: GNU Affero General Public License v3',
-          'Development Status :: 3 - Alpha',
-          'Topic :: Scientific/Engineering',
-          'Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)',
-          'Programming Language :: Python :: 3'
-      ],
-      url='https://codeberg.org/librecell/lclayout',
-      author='T. Kramer',
-      author_email='code@tkramer.ch',
-      license='OHL-S v2.0',
-      packages=find_packages(),
-      package_data={'': ['examples/*']},
-      entry_points={
-          'console_scripts': [
-              'lclayout = lclayout.standalone:main',
-              # 'drc_cleaner = lclayout.drc_cleaner.standalone:main',
-          ]
-      },
-      install_requires=[
-          'toml==0.10.*',
-          'klayout>=0.27.3',  # GPLv3, minimum of 0.27.3 because of case-sensitive netlists.
-          'numpy==1.*',  # BSD
-          'networkx==2.*',  # BSD
-          'scipy>=1.5.*',  # BSD
-          'liberty-parser>=0.0.10',  # GPLv3
-          'pysmt==0.9.*',  # Apache-2.0
-          'z3-solver==4.8.*'  #
-      ],
-      zip_safe=False)
diff --git a/lclayout/__init__.py b/src/lclayout/__init__.py
similarity index 100%
rename from lclayout/__init__.py
rename to src/lclayout/__init__.py
diff --git a/lclayout/data_types.py b/src/lclayout/data_types.py
similarity index 100%
rename from lclayout/data_types.py
rename to src/lclayout/data_types.py
diff --git a/lclayout/drc_cleaner/__init__.py b/src/lclayout/drc_cleaner/__init__.py
similarity index 100%
rename from lclayout/drc_cleaner/__init__.py
rename to src/lclayout/drc_cleaner/__init__.py
diff --git a/lclayout/drc_cleaner/base.py b/src/lclayout/drc_cleaner/base.py
similarity index 100%
rename from lclayout/drc_cleaner/base.py
rename to src/lclayout/drc_cleaner/base.py
diff --git a/lclayout/drc_cleaner/drc_cleaner.py b/src/lclayout/drc_cleaner/drc_cleaner.py
similarity index 100%
rename from lclayout/drc_cleaner/drc_cleaner.py
rename to src/lclayout/drc_cleaner/drc_cleaner.py
diff --git a/lclayout/drc_cleaner/drc_theorem_proofs.py b/src/lclayout/drc_cleaner/drc_theorem_proofs.py
similarity index 100%
rename from lclayout/drc_cleaner/drc_theorem_proofs.py
rename to src/lclayout/drc_cleaner/drc_theorem_proofs.py
diff --git a/lclayout/drc_cleaner/standalone.py b/src/lclayout/drc_cleaner/standalone.py
similarity index 100%
rename from lclayout/drc_cleaner/standalone.py
rename to src/lclayout/drc_cleaner/standalone.py
diff --git a/lclayout/extrema.py b/src/lclayout/extrema.py
similarity index 100%
rename from lclayout/extrema.py
rename to src/lclayout/extrema.py
diff --git a/lclayout/graphrouter/__init__.py b/src/lclayout/graphrouter/__init__.py
similarity index 100%
rename from lclayout/graphrouter/__init__.py
rename to src/lclayout/graphrouter/__init__.py
diff --git a/lclayout/graphrouter/graphrouter.py b/src/lclayout/graphrouter/graphrouter.py
similarity index 100%
rename from lclayout/graphrouter/graphrouter.py
rename to src/lclayout/graphrouter/graphrouter.py
diff --git a/lclayout/graphrouter/hv_router.py b/src/lclayout/graphrouter/hv_router.py
similarity index 100%
rename from lclayout/graphrouter/hv_router.py
rename to src/lclayout/graphrouter/hv_router.py
diff --git a/lclayout/graphrouter/lp_router.py b/src/lclayout/graphrouter/lp_router.py
similarity index 100%
rename from lclayout/graphrouter/lp_router.py
rename to src/lclayout/graphrouter/lp_router.py
diff --git a/lclayout/graphrouter/min_area_router.py b/src/lclayout/graphrouter/min_area_router.py
similarity index 100%
rename from lclayout/graphrouter/min_area_router.py
rename to src/lclayout/graphrouter/min_area_router.py
diff --git a/lclayout/graphrouter/multi_via_router.py b/src/lclayout/graphrouter/multi_via_router.py
similarity index 100%
rename from lclayout/graphrouter/multi_via_router.py
rename to src/lclayout/graphrouter/multi_via_router.py
diff --git a/lclayout/graphrouter/pathfinder.py b/src/lclayout/graphrouter/pathfinder.py
similarity index 100%
rename from lclayout/graphrouter/pathfinder.py
rename to src/lclayout/graphrouter/pathfinder.py
diff --git a/lclayout/graphrouter/pyo3_graphrouter.py b/src/lclayout/graphrouter/pyo3_graphrouter.py
similarity index 100%
rename from lclayout/graphrouter/pyo3_graphrouter.py
rename to src/lclayout/graphrouter/pyo3_graphrouter.py
diff --git a/lclayout/graphrouter/signal_router.py b/src/lclayout/graphrouter/signal_router.py
similarity index 100%
rename from lclayout/graphrouter/signal_router.py
rename to src/lclayout/graphrouter/signal_router.py
diff --git a/lclayout/graphrouter/smt_router.py b/src/lclayout/graphrouter/smt_router.py
similarity index 100%
rename from lclayout/graphrouter/smt_router.py
rename to src/lclayout/graphrouter/smt_router.py
diff --git a/lclayout/layout/__init__.py b/src/lclayout/layout/__init__.py
similarity index 100%
rename from lclayout/layout/__init__.py
rename to src/lclayout/layout/__init__.py
diff --git a/lclayout/layout/cell_template.py b/src/lclayout/layout/cell_template.py
similarity index 100%
rename from lclayout/layout/cell_template.py
rename to src/lclayout/layout/cell_template.py
diff --git a/lclayout/layout/geometry_helpers.py b/src/lclayout/layout/geometry_helpers.py
similarity index 100%
rename from lclayout/layout/geometry_helpers.py
rename to src/lclayout/layout/geometry_helpers.py
diff --git a/lclayout/layout/grid.py b/src/lclayout/layout/grid.py
similarity index 100%
rename from lclayout/layout/grid.py
rename to src/lclayout/layout/grid.py
diff --git a/lclayout/layout/grid_helpers.py b/src/lclayout/layout/grid_helpers.py
similarity index 100%
rename from lclayout/layout/grid_helpers.py
rename to src/lclayout/layout/grid_helpers.py
diff --git a/lclayout/layout/layers.py b/src/lclayout/layout/layers.py
similarity index 100%
rename from lclayout/layout/layers.py
rename to src/lclayout/layout/layers.py
diff --git a/lclayout/layout/notch_removal.py b/src/lclayout/layout/notch_removal.py
similarity index 100%
rename from lclayout/layout/notch_removal.py
rename to src/lclayout/layout/notch_removal.py
diff --git a/lclayout/layout/transistor.py b/src/lclayout/layout/transistor.py
similarity index 100%
rename from lclayout/layout/transistor.py
rename to src/lclayout/layout/transistor.py
diff --git a/lclayout/layout/welltap.py b/src/lclayout/layout/welltap.py
similarity index 100%
rename from lclayout/layout/welltap.py
rename to src/lclayout/layout/welltap.py
diff --git a/lclayout/lef/__init__.py b/src/lclayout/lef/__init__.py
similarity index 100%
rename from lclayout/lef/__init__.py
rename to src/lclayout/lef/__init__.py
diff --git a/lclayout/lef/types.py b/src/lclayout/lef/types.py
similarity index 100%
rename from lclayout/lef/types.py
rename to src/lclayout/lef/types.py
diff --git a/lclayout/lvs/__init__.py b/src/lclayout/lvs/__init__.py
similarity index 100%
rename from lclayout/lvs/__init__.py
rename to src/lclayout/lvs/__init__.py
diff --git a/lclayout/lvs/lvs.py b/src/lclayout/lvs/lvs.py
similarity index 100%
rename from lclayout/lvs/lvs.py
rename to src/lclayout/lvs/lvs.py
diff --git a/lclayout/place/__init__.py b/src/lclayout/place/__init__.py
similarity index 100%
rename from lclayout/place/__init__.py
rename to src/lclayout/place/__init__.py
diff --git a/lclayout/place/euler_placer.py b/src/lclayout/place/euler_placer.py
similarity index 100%
rename from lclayout/place/euler_placer.py
rename to src/lclayout/place/euler_placer.py
diff --git a/lclayout/place/eulertours.py b/src/lclayout/place/eulertours.py
similarity index 100%
rename from lclayout/place/eulertours.py
rename to src/lclayout/place/eulertours.py
diff --git a/lclayout/place/meta_placer.py b/src/lclayout/place/meta_placer.py
similarity index 100%
rename from lclayout/place/meta_placer.py
rename to src/lclayout/place/meta_placer.py
diff --git a/lclayout/place/partition.py b/src/lclayout/place/partition.py
similarity index 100%
rename from lclayout/place/partition.py
rename to src/lclayout/place/partition.py
diff --git a/lclayout/place/place.py b/src/lclayout/place/place.py
similarity index 100%
rename from lclayout/place/place.py
rename to src/lclayout/place/place.py
diff --git a/lclayout/place/smt_placer.py b/src/lclayout/place/smt_placer.py
similarity index 100%
rename from lclayout/place/smt_placer.py
rename to src/lclayout/place/smt_placer.py
diff --git a/lclayout/router.py b/src/lclayout/router.py
similarity index 100%
rename from lclayout/router.py
rename to src/lclayout/router.py
diff --git a/lclayout/routing_graph.py b/src/lclayout/routing_graph.py
similarity index 100%
rename from lclayout/routing_graph.py
rename to src/lclayout/routing_graph.py
diff --git a/lclayout/standalone.py b/src/lclayout/standalone.py
similarity index 100%
rename from lclayout/standalone.py
rename to src/lclayout/standalone.py
diff --git a/lclayout/tech_util.py b/src/lclayout/tech_util.py
similarity index 100%
rename from lclayout/tech_util.py
rename to src/lclayout/tech_util.py
diff --git a/lclayout/writer/__init__.py b/src/lclayout/writer/__init__.py
similarity index 100%
rename from lclayout/writer/__init__.py
rename to src/lclayout/writer/__init__.py
diff --git a/lclayout/writer/gds_writer.py b/src/lclayout/writer/gds_writer.py
similarity index 100%
rename from lclayout/writer/gds_writer.py
rename to src/lclayout/writer/gds_writer.py
diff --git a/lclayout/writer/lef_writer.py b/src/lclayout/writer/lef_writer.py
similarity index 100%
rename from lclayout/writer/lef_writer.py
rename to src/lclayout/writer/lef_writer.py
diff --git a/lclayout/writer/magic_writer.py b/src/lclayout/writer/magic_writer.py
similarity index 100%
rename from lclayout/writer/magic_writer.py
rename to src/lclayout/writer/magic_writer.py
diff --git a/lclayout/writer/oasis_writer.py b/src/lclayout/writer/oasis_writer.py
similarity index 100%
rename from lclayout/writer/oasis_writer.py
rename to src/lclayout/writer/oasis_writer.py
diff --git a/lclayout/writer/writer.py b/src/lclayout/writer/writer.py
similarity index 100%
rename from lclayout/writer/writer.py
rename to src/lclayout/writer/writer.py