diff --git a/cml/controller/api.py b/cml/controller/api.py
new file mode 100644
index 0000000000000000000000000000000000000000..3fcef03fbcad33b7b043291ccc42c03f6688c317
--- /dev/null
+++ b/cml/controller/api.py
@@ -0,0 +1,66 @@
+"""Entry point.
+
+"""
+from cml.usecases.query import PreprocessUsecase
+from cml.ports.source_adapters import PandasAdapter
+from cml.shared.settings import Settings
+from cml.shared.settings import specific_settings_factory, read_settings
+from cml.shared.request import PreprocessRequest
+
+
+__all__ = (
+    "load_settings",
+    "get_settings",
+    "get_data_source",
+    "construction",
+    "reconstruction",
+    "reconstruction",
+    "search_knowledge",
+    "visualizer",
+    "save_knowledge",
+    "load_knowledge"
+)
+
+
+def load_settings(path: str):
+    read_settings(path)
+
+
+def get_settings():
+    return Settings
+
+
+def get_data_source():
+    general_settings = specific_settings_factory("general")
+    preprocessing_settings = specific_settings_factory("preprocessing")
+    block_processing_settings = specific_settings_factory("block_processing")
+    source_adapter = PandasAdapter.read_csv_data(general_settings.input_file)
+    preprocessing_req = PreprocessRequest(source_adapter,
+                                          preprocessing_settings,
+                                          block_processing_settings)
+    preprocessing_usecase = PreprocessUsecase()
+    return preprocessing_usecase.execute(preprocessing_req)
+
+
+def construction():
+    pass
+
+
+def reconstruction():
+    pass
+
+
+def search_knowledge():
+    pass
+
+
+def visualizer():
+    pass
+
+
+def save_knowledge():
+    pass
+
+
+def load_knowledge():
+    pass