diff --git a/pom.xml b/pom.xml
index 68802452b0449412006f47b0a0cca4e2ad99351a..0221a528777743ff70d5aa1328aedca55e31ca2e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
     <version>1.0-SNAPSHOT</version>
 
     <properties>
-        <main.class>unibz.cs.semint.kprime.StarterKt</main.class>
+        <main.class>unibz.cs.semint.kprime.Starter</main.class>
 
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
diff --git a/src/main/kotlin/unibz.cs.semint.kprime/SakilaScenario.kt b/src/main/kotlin/unibz.cs.semint.kprime/SakilaScenario.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cf7f9ce8219e8e23bbe1d2254024705579373071
--- /dev/null
+++ b/src/main/kotlin/unibz.cs.semint.kprime/SakilaScenario.kt
@@ -0,0 +1,50 @@
+package unibz.cs.semint.kprime
+
+import unibz.cs.semint.kprime.adapter.repository.MetaSchemaJdbcAdapter
+import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
+import unibz.cs.semint.kprime.domain.DataSource
+import unibz.cs.semint.kprime.domain.Database
+import unibz.cs.semint.kprime.usecase.MetaSchemaReadUseCase
+
+class SakilaScenario {
+
+    fun run() {
+        val sakilaMeta = readSakilaMeta()
+        if (sakilaMeta!=null) {
+            vsplitSakila(sakilaMeta)
+            hsplitSakila(sakilaMeta)
+            identifySakila(sakilaMeta)
+        }
+    }
+
+    private fun readSakilaMeta(): Database? {
+        val type = "psql"
+        val name = "sakila-source"
+        val driver = "org.postgresql.Driver"
+        val path = "jdbc:postgresql://localhost:5432/sakila"
+        val user = "sammy"
+        val pass = "pass"
+        val sakilaSource = DataSource(type,name,driver,path,user,pass)
+        val result = MetaSchemaReadUseCase().doit(sakilaSource,
+                "read-meta-schema sakila-source",
+                MetaSchemaJdbcAdapter(),
+                XMLSerializerJacksonAdapter())
+        return result.ok
+    }
+
+    private fun vsplitSakila(db: Database) {
+        // if detect(db):result
+        //  apply(db,result):db
+    }
+
+    private fun hsplitSakila(db: Database) {
+        // if detect(db):result
+        //  apply(db,result):db
+    }
+
+    private fun identifySakila(db: Database) {
+        // if detect(db):result
+        //  apply(db,result):db
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/unibz.cs.semint.kprime/Starter.kt b/src/main/kotlin/unibz.cs.semint.kprime/Starter.kt
index 29b40c98a30bba142ca7e9e63938c971888f375d..4ddb1c8a6006ea7e2bd534a86db5b8fb98f4c064 100644
--- a/src/main/kotlin/unibz.cs.semint.kprime/Starter.kt
+++ b/src/main/kotlin/unibz.cs.semint.kprime/Starter.kt
@@ -1,54 +1,18 @@
 package unibz.cs.semint.kprime
 
-import unibz.cs.semint.kprime.adapter.repository.MetaSchemaJdbcAdapter
-import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
-import unibz.cs.semint.kprime.domain.DataSource
-import unibz.cs.semint.kprime.domain.Database
-import unibz.cs.semint.kprime.usecase.MetaSchemaReadUseCase
-
 class Starter {
 
+ companion object {
 
-    fun main(args:Array<String>) {
-        val version = "0.1.0-SNAPSHOT"
-        println("KPrime $version")
-        val sakilaMeta = readSakilaMeta()
-        if (sakilaMeta!=null) {
-            vsplitSakila(sakilaMeta)
-            hsplitSakila(sakilaMeta)
-            identifySakila(sakilaMeta)
-        }
-    }
-
-
-    fun readSakilaMeta():Database? {
-        val type = "psql"
-        val name = "sakila-source"
-        val driver = "org.postgresql.Driver"
-        val path = "jdbc:postgresql://localhost:5432/sakila"
-        val user = "sammy"
-        val pass = "pass"
-        val sakilaSource = DataSource(type,name,driver,path,user,pass)
-        val result = MetaSchemaReadUseCase().doit(sakilaSource,
-                "read-meta-schema sakila-source",
-                MetaSchemaJdbcAdapter(),
-                XMLSerializerJacksonAdapter())
-        return result.ok
-    }
-
-    fun vsplitSakila(db:Database) {
-        // if detect(db):result
-        //  apply(db,result):db
-    }
-
-    fun hsplitSakila(db:Database) {
-        // if detect(db):result
-        //  apply(db,result):db
-    }
+     /**
+      * Reads arguments from command lines and eventually gives then as scenario parameters.
+      */
+     fun main(args:Array<String>) {
+         val version = "0.1.0-SNAPSHOT"
+         println("KPrime $version")
+         SakilaScenario().run()
+     }
 
-    fun identifySakila(db:Database) {
-        // if detect(db):result
-        //  apply(db,result):db
-    }
+ }
 
 }
\ No newline at end of file
diff --git a/src/test/kotlin/unibz.cs.semint.kprime/StarterTI.kt b/src/test/kotlin/unibz.cs.semint.kprime/StarterTI.kt
new file mode 100644
index 0000000000000000000000000000000000000000..60862e4e1d9205995eddba68fbbda97d8948197a
--- /dev/null
+++ b/src/test/kotlin/unibz.cs.semint.kprime/StarterTI.kt
@@ -0,0 +1,22 @@
+package unibz.cs.semint.kprime
+
+import org.junit.Test
+import org.junit.Assert.*
+
+/**
+ * Applies Starter to local Sakila Postgres Example.
+ */
+class StarterTI {
+
+    @Test
+    fun test_starter() {
+        // given
+        val args = arrayOf<String>()
+        // when
+        Starter.main(args)
+        // then
+        assertEquals("Alfa", "Alfa")
+    }
+
+}
+
diff --git a/src/test/kotlin/unibz.cs.semint.kprime/StarterTest.kt b/src/test/kotlin/unibz.cs.semint.kprime/StarterTest.kt
deleted file mode 100644
index 5560b1999f15955b90b009f15b7bdee275c1dc94..0000000000000000000000000000000000000000
--- a/src/test/kotlin/unibz.cs.semint.kprime/StarterTest.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package unibz.cs.semint.kprime
-
-import org.junit.Test
-import org.junit.Assert.*
-
-class StarterTest {
-
-    @Test
-    fun test_starter() {
-        assertEquals("Alfa", "Alfa")
-    }
-
-}
-