Merge pull request #6 from apache/develop

Sync develop branch with apache repo
diff --git a/engine-executor/build.sbt b/engine-executor/build.sbt
index 4ca3eab..88e3d47 100644
--- a/engine-executor/build.sbt
+++ b/engine-executor/build.sbt
@@ -58,8 +58,8 @@
 
 libraryDependencies += "com.github.cb372" %% "scalacache-guava" % "0.22.0"
 
-mainClass in (Compile, run) := Some("org.marvin.executor.EngineExecutorApp")
-mainClass in assembly := Some("org.marvin.executor.EngineExecutorApp")
+mainClass in (Compile, run) := Some("org.apache.marvin.executor.EngineExecutorApp")
+mainClass in assembly := Some("org.apache.marvin.executor.EngineExecutorApp")
 
 assemblyMergeStrategy in assembly := {
   case PathList("org", "apache", xs @_*) => MergeStrategy.first
diff --git a/engine-executor/build/marvin-engine-server-assembly.jar b/engine-executor/build/marvin-engine-executor-assembly.jar
similarity index 100%
rename from engine-executor/build/marvin-engine-server-assembly.jar
rename to engine-executor/build/marvin-engine-executor-assembly.jar
Binary files differ
diff --git a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactFSSaver.scala b/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactFSSaver.scala
index 892b7ad..8fae304 100644
--- a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactFSSaver.scala
+++ b/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactFSSaver.scala
@@ -14,14 +14,14 @@
  * limitations under the License.
  *
  */
-package org.marvin.artifact.manager
+package org.apache.marvin.artifact.manager
 
 import java.nio.file.{Files, Path, Paths, StandardCopyOption}
 
 import akka.Done
 import akka.actor.{Actor, ActorLogging}
-import org.marvin.artifact.manager.ArtifactSaver.{GetArtifact, SaveToLocal, SaveToRemote}
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.artifact.manager.ArtifactSaver.{GetArtifact, SaveToLocal, SaveToRemote}
+import org.apache.marvin.model.EngineMetadata
 
 class ArtifactFSSaver(metadata: EngineMetadata) extends Actor with ActorLogging {
   override def preStart() = {
diff --git a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactHdfsSaver.scala b/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactHdfsSaver.scala
index 33e2bfd..c268dc1 100644
--- a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactHdfsSaver.scala
+++ b/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactHdfsSaver.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.artifact.manager
+package org.apache.marvin.artifact.manager
 
 import java.io.{File, FileInputStream}
 
@@ -22,8 +22,8 @@
 import akka.actor.{Actor, ActorLogging}
 import org.apache.hadoop.conf.Configuration
 import org.apache.hadoop.fs.{FileSystem, Path}
-import org.marvin.artifact.manager.ArtifactSaver.{SaveToLocal, SaveToRemote}
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.artifact.manager.ArtifactSaver.{SaveToLocal, SaveToRemote}
+import org.apache.marvin.model.EngineMetadata
 
 class ArtifactHdfsSaver(metadata: EngineMetadata) extends Actor with ActorLogging {
   var conf: Configuration = _
diff --git a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactS3Saver.scala b/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactS3Saver.scala
index 1a66aae..cf93e5b 100644
--- a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactS3Saver.scala
+++ b/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactS3Saver.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.artifact.manager
+package org.apache.marvin.artifact.manager
 
 import java.io.File
 
@@ -23,8 +23,8 @@
 import com.amazonaws.services.s3.model.GetObjectRequest
 import com.amazonaws.services.s3.{AmazonS3, AmazonS3ClientBuilder}
 import org.apache.hadoop.fs.Path
-import org.marvin.artifact.manager.ArtifactSaver.{SaveToLocal, SaveToRemote}
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.artifact.manager.ArtifactSaver.{SaveToLocal, SaveToRemote}
+import org.apache.marvin.model.EngineMetadata
 
 class ArtifactS3Saver(metadata: EngineMetadata) extends Actor with ActorLogging {
   var s3Client: AmazonS3 = _
diff --git a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactSaver.scala b/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactSaver.scala
index ce997cd..840768f 100644
--- a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactSaver.scala
+++ b/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactSaver.scala
@@ -14,11 +14,11 @@
  * limitations under the License.
  *
  */
-package org.marvin.artifact.manager
+package org.apache.marvin.artifact.manager
 
 import akka.actor.Props
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.model.EngineMetadata
 
 object ArtifactSaver {
   case class SaveToLocal(artifactName: String, protocol:String)
diff --git a/engine-executor/src/main/scala/org/marvin/exception/MarvinEExecutorException.scala b/engine-executor/src/main/scala/org/marvin/exception/MarvinEExecutorException.scala
index 778dec6..1e340df 100644
--- a/engine-executor/src/main/scala/org/marvin/exception/MarvinEExecutorException.scala
+++ b/engine-executor/src/main/scala/org/marvin/exception/MarvinEExecutorException.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.exception
+package org.apache.marvin.exception
 
 class MarvinEExecutorException(message: String, suppressed: Throwable) extends Throwable {
 
diff --git a/engine-executor/src/main/scala/org/marvin/executor/EngineExecutorApp.scala b/engine-executor/src/main/scala/org/marvin/executor/EngineExecutorApp.scala
index 7d1b38a..67605aa 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/EngineExecutorApp.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/EngineExecutorApp.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor
+package org.apache.marvin.executor
 
 import java.io.FileNotFoundException
 
@@ -23,13 +23,13 @@
 import com.github.fge.jsonschema.core.exceptions.ProcessingException
 import com.typesafe.config.{Config, ConfigFactory}
 import grizzled.slf4j.Logger
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.executor.actions.{BatchAction, OnlineAction, PipelineAction}
-import org.marvin.executor.api.{GenericAPI, GenericAPIFunctions}
-import org.marvin.executor.manager.ExecutorManager
-import org.marvin.executor.statemachine.{PredictorFSM, Reload}
-import org.marvin.model.EngineMetadata
-import org.marvin.util.{ConfigurationContext, JsonUtil}
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.executor.actions.{BatchAction, OnlineAction, PipelineAction}
+import org.apache.marvin.executor.api.{GenericAPI, GenericAPIFunctions}
+import org.apache.marvin.executor.manager.ExecutorManager
+import org.apache.marvin.executor.statemachine.{PredictorFSM, Reload}
+import org.apache.marvin.model.EngineMetadata
+import org.apache.marvin.util.{ConfigurationContext, JsonUtil}
 
 import scala.io.Source
 import scala.reflect.ClassTag
diff --git a/engine-executor/src/main/scala/org/marvin/executor/actions/BatchAction.scala b/engine-executor/src/main/scala/org/marvin/executor/actions/BatchAction.scala
index 596f32b..871be12 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/actions/BatchAction.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/actions/BatchAction.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.actions
+package org.apache.marvin.executor.actions
 
 import java.time.LocalDateTime
 import java.util.NoSuchElementException
@@ -23,14 +23,14 @@
 import akka.actor.{Actor, ActorLogging, ActorRef, Props}
 import akka.pattern.{ask, pipe}
 import akka.util.Timeout
-import org.marvin.artifact.manager.ArtifactSaver
-import org.marvin.artifact.manager.ArtifactSaver.{GetArtifact, SaveToLocal, SaveToRemote}
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.executor.actions.BatchAction.{BatchExecute, BatchExecutionStatus, BatchHealthCheck, BatchReload, BatchMetrics}
-import org.marvin.executor.proxies.BatchActionProxy
-import org.marvin.executor.proxies.EngineProxy.{ExecuteBatch, HealthCheck, Reload}
-import org.marvin.model._
-import org.marvin.util.{JsonUtil, LocalCache, ProtocolUtil}
+import org.apache.marvin.artifact.manager.ArtifactSaver
+import org.apache.marvin.artifact.manager.ArtifactSaver.{GetArtifact, SaveToLocal, SaveToRemote}
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.executor.actions.BatchAction.{BatchExecute, BatchExecutionStatus, BatchHealthCheck, BatchReload, BatchMetrics}
+import org.apache.marvin.executor.proxies.BatchActionProxy
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteBatch, HealthCheck, Reload}
+import org.apache.marvin.model._
+import org.apache.marvin.util.{JsonUtil, LocalCache, ProtocolUtil}
 
 import scala.collection.mutable.ListBuffer
 import scala.concurrent.Future
diff --git a/engine-executor/src/main/scala/org/marvin/executor/actions/OnlineAction.scala b/engine-executor/src/main/scala/org/marvin/executor/actions/OnlineAction.scala
index 35d8ec0..750f2d4 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/actions/OnlineAction.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/actions/OnlineAction.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.actions
+package org.apache.marvin.executor.actions
 
 import akka.Done
 import akka.actor.SupervisorStrategy._
@@ -22,13 +22,13 @@
 import akka.pattern.{ask, pipe}
 import akka.util.Timeout
 import io.grpc.StatusRuntimeException
-import org.marvin.artifact.manager.ArtifactSaver
-import org.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck, OnlineReload}
-import org.marvin.executor.proxies.EngineProxy.{ExecuteOnline, HealthCheck, Reload}
-import org.marvin.executor.proxies.OnlineActionProxy
-import org.marvin.artifact.manager.ArtifactSaver.SaveToLocal
-import org.marvin.model.{EngineActionMetadata, EngineMetadata}
-import org.marvin.util.ProtocolUtil
+import org.apache.marvin.artifact.manager.ArtifactSaver
+import org.apache.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck, OnlineReload}
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteOnline, HealthCheck, Reload}
+import org.apache.marvin.executor.proxies.OnlineActionProxy
+import org.apache.marvin.artifact.manager.ArtifactSaver.SaveToLocal
+import org.apache.marvin.model.{EngineActionMetadata, EngineMetadata}
+import org.apache.marvin.util.ProtocolUtil
 
 import scala.collection.mutable.ListBuffer
 import scala.concurrent.Future
diff --git a/engine-executor/src/main/scala/org/marvin/executor/actions/PipelineAction.scala b/engine-executor/src/main/scala/org/marvin/executor/actions/PipelineAction.scala
index 10d5ec9..160e051 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/actions/PipelineAction.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/actions/PipelineAction.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.actions
+package org.apache.marvin.executor.actions
 
 import java.time.LocalDateTime
 import java.util.NoSuchElementException
@@ -23,14 +23,14 @@
 import akka.actor.{Actor, ActorLogging, ActorRef, Props}
 import akka.pattern.ask
 import akka.util.Timeout
-import org.marvin.artifact.manager.ArtifactSaver
-import org.marvin.artifact.manager.ArtifactSaver.SaveToRemote
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.executor.actions.PipelineAction.{PipelineExecute, PipelineExecutionStatus}
-import org.marvin.executor.proxies.BatchActionProxy
-import org.marvin.executor.proxies.EngineProxy.{ExecuteBatch, Reload}
-import org.marvin.model._
-import org.marvin.util.{JsonUtil, LocalCache}
+import org.apache.marvin.artifact.manager.ArtifactSaver
+import org.apache.marvin.artifact.manager.ArtifactSaver.SaveToRemote
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.executor.actions.PipelineAction.{PipelineExecute, PipelineExecutionStatus}
+import org.apache.marvin.executor.proxies.BatchActionProxy
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteBatch, Reload}
+import org.apache.marvin.model._
+import org.apache.marvin.util.{JsonUtil, LocalCache}
 
 import scala.collection.mutable.ListBuffer
 import scala.concurrent.duration._
diff --git a/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPI.scala b/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPI.scala
index a86e79f..9406f86 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPI.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPI.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.api
+package org.apache.marvin.executor.api
 
 import java.util.concurrent.Executors
 
@@ -29,13 +29,13 @@
 import akka.pattern.ask
 import akka.util.Timeout
 import com.github.fge.jsonschema.core.exceptions.ProcessingException
-import org.marvin.executor.actions.BatchAction.{BatchExecute, BatchExecutionStatus, BatchMetrics, BatchHealthCheck, BatchReload}
-import org.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck}
-import org.marvin.executor.actions.PipelineAction.{PipelineExecute, PipelineExecutionStatus}
-import org.marvin.executor.api.GenericAPI._
-import org.marvin.executor.statemachine.Reload
-import org.marvin.model.EngineMetadata
-import org.marvin.util.{JsonUtil, ProtocolUtil}
+import org.apache.marvin.executor.actions.BatchAction.{BatchExecute, BatchExecutionStatus, BatchMetrics, BatchHealthCheck, BatchReload}
+import org.apache.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck}
+import org.apache.marvin.executor.actions.PipelineAction.{PipelineExecute, PipelineExecutionStatus}
+import org.apache.marvin.executor.api.GenericAPI._
+import org.apache.marvin.executor.statemachine.Reload
+import org.apache.marvin.model.EngineMetadata
+import org.apache.marvin.util.{JsonUtil, ProtocolUtil}
 import spray.json.{DefaultJsonProtocol, RootJsonFormat, _}
 
 import scala.concurrent._
diff --git a/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPIHandlers.scala b/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPIHandlers.scala
index 9bd39fe..951deb1 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPIHandlers.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPIHandlers.scala
@@ -14,13 +14,13 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.api
+package org.apache.marvin.executor.api
 
 import akka.http.scaladsl.model._
 import akka.http.scaladsl.server.Directives._
 import akka.http.scaladsl.server.{ExceptionHandler, MissingQueryParamRejection, RejectionHandler}
 import grizzled.slf4j.Logger
-import org.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.exception.MarvinEExecutorException
 import spray.json.DefaultJsonProtocol._
 
 import scala.concurrent.TimeoutException
diff --git a/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorClusterListener.scala b/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorClusterListener.scala
index ef1835f..2587f29 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorClusterListener.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorClusterListener.scala
@@ -1,4 +1,4 @@
-package org.marvin.executor.manager
+package org.apache.marvin.executor.manager
 
 import akka.cluster.Cluster
 import akka.cluster.ClusterEvent._
diff --git a/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorManager.scala b/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorManager.scala
index 2e97a77..cb95948 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorManager.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorManager.scala
@@ -14,12 +14,12 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.manager
+package org.apache.marvin.executor.manager
 
 import akka.actor.{Actor, ActorLogging}
 import akka.util.Timeout
-import org.marvin.executor.api.{GenericAPI, GenericAPIFunctions}
-import org.marvin.executor.manager.ExecutorManager.{GetMetadata, StopActor}
+import org.apache.marvin.executor.api.{GenericAPI, GenericAPIFunctions}
+import org.apache.marvin.executor.manager.ExecutorManager.{GetMetadata, StopActor}
 
 import scala.concurrent.ExecutionContext
 import scala.concurrent.duration._
diff --git a/engine-executor/src/main/scala/org/marvin/executor/proxies/BatchActionProxy.scala b/engine-executor/src/main/scala/org/marvin/executor/proxies/BatchActionProxy.scala
index 4b0624c..fb3eb3c 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/proxies/BatchActionProxy.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/proxies/BatchActionProxy.scala
@@ -14,14 +14,14 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.proxies
+package org.apache.marvin.executor.proxies
 
 import actions.BatchActionHandlerGrpc.BatchActionHandlerBlockingClient
 import actions.{BatchActionHandlerGrpc, BatchActionRequest, HealthCheckRequest, ReloadRequest}
 import akka.Done
 import io.grpc.ManagedChannelBuilder
-import org.marvin.executor.proxies.EngineProxy.{ExecuteBatch, HealthCheck, Reload}
-import org.marvin.model.EngineActionMetadata
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteBatch, HealthCheck, Reload}
+import org.apache.marvin.model.EngineActionMetadata
 
 class BatchActionProxy(metadata: EngineActionMetadata) extends EngineProxy (metadata)  {
   var engineClient:BatchActionHandlerBlockingClient = _
diff --git a/engine-executor/src/main/scala/org/marvin/executor/proxies/EngineProxy.scala b/engine-executor/src/main/scala/org/marvin/executor/proxies/EngineProxy.scala
index e21ad6a..a213e02 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/proxies/EngineProxy.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/proxies/EngineProxy.scala
@@ -14,10 +14,10 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.proxies
+package org.apache.marvin.executor.proxies
 
 import akka.actor.{Actor, ActorLogging}
-import org.marvin.model.EngineActionMetadata
+import org.apache.marvin.model.EngineActionMetadata
 
 object EngineProxy {
   case class ExecuteBatch(protocol:String, params:String)
diff --git a/engine-executor/src/main/scala/org/marvin/executor/proxies/OnlineActionProxy.scala b/engine-executor/src/main/scala/org/marvin/executor/proxies/OnlineActionProxy.scala
index 7e8e92c..f26a32b 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/proxies/OnlineActionProxy.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/proxies/OnlineActionProxy.scala
@@ -14,14 +14,14 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.proxies
+package org.apache.marvin.executor.proxies
 
 import actions.OnlineActionHandlerGrpc.{OnlineActionHandler, OnlineActionHandlerBlockingClient, OnlineActionHandlerBlockingStub, OnlineActionHandlerStub}
 import actions._
 import akka.pattern.pipe
 import io.grpc.ManagedChannelBuilder
-import org.marvin.executor.proxies.EngineProxy.{ExecuteOnline, HealthCheck, Reload}
-import org.marvin.model.EngineActionMetadata
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteOnline, HealthCheck, Reload}
+import org.apache.marvin.model.EngineActionMetadata
 
 //Reload messages
 final case class Reloaded(protocol: String)
diff --git a/engine-executor/src/main/scala/org/marvin/executor/statemachine/PredictorFSM.scala b/engine-executor/src/main/scala/org/marvin/executor/statemachine/PredictorFSM.scala
index 1a57e74..0e9f1ef 100644
--- a/engine-executor/src/main/scala/org/marvin/executor/statemachine/PredictorFSM.scala
+++ b/engine-executor/src/main/scala/org/marvin/executor/statemachine/PredictorFSM.scala
@@ -14,14 +14,14 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.statemachine
+package org.apache.marvin.executor.statemachine
 
 import akka.actor.{ActorRef, FSM, Props}
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.executor.actions.OnlineAction
-import org.marvin.executor.actions.OnlineAction._
-import org.marvin.executor.proxies.{FailedToReload, Reloaded}
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.executor.actions.OnlineAction
+import org.apache.marvin.executor.actions.OnlineAction._
+import org.apache.marvin.executor.proxies.{FailedToReload, Reloaded}
+import org.apache.marvin.model.EngineMetadata
 
 import scala.concurrent.duration._
 
diff --git a/engine-executor/src/main/scala/org/marvin/model/BatchExecution.scala b/engine-executor/src/main/scala/org/marvin/model/BatchExecution.scala
index 750567c..b71b85a 100644
--- a/engine-executor/src/main/scala/org/marvin/model/BatchExecution.scala
+++ b/engine-executor/src/main/scala/org/marvin/model/BatchExecution.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.model
+package org.apache.marvin.model
 
 import java.time.LocalDateTime
 import java.time.format.DateTimeFormatter
diff --git a/engine-executor/src/main/scala/org/marvin/model/Metadata.scala b/engine-executor/src/main/scala/org/marvin/model/Metadata.scala
index a137546..65bcfe8 100644
--- a/engine-executor/src/main/scala/org/marvin/model/Metadata.scala
+++ b/engine-executor/src/main/scala/org/marvin/model/Metadata.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.model
+package org.apache.marvin.model
 
 import scala.collection.mutable.Map
 
diff --git a/engine-executor/src/main/scala/org/marvin/util/ConfigurationContext.scala b/engine-executor/src/main/scala/org/marvin/util/ConfigurationContext.scala
index 3f77b98..9f6f46d 100644
--- a/engine-executor/src/main/scala/org/marvin/util/ConfigurationContext.scala
+++ b/engine-executor/src/main/scala/org/marvin/util/ConfigurationContext.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.util
+package org.apache.marvin.util
 
 import com.typesafe.config.ConfigFactory
 
diff --git a/engine-executor/src/main/scala/org/marvin/util/JsonUtil.scala b/engine-executor/src/main/scala/org/marvin/util/JsonUtil.scala
index cb49ce5..552e1e4 100644
--- a/engine-executor/src/main/scala/org/marvin/util/JsonUtil.scala
+++ b/engine-executor/src/main/scala/org/marvin/util/JsonUtil.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.util
+package org.apache.marvin.util
 
 import com.fasterxml.jackson.databind.{DeserializationFeature, JsonNode, ObjectMapper}
 import com.fasterxml.jackson.module.scala.DefaultScalaModule
diff --git a/engine-executor/src/main/scala/org/marvin/util/LocalCache.scala b/engine-executor/src/main/scala/org/marvin/util/LocalCache.scala
index 604b18c..9ec1526 100644
--- a/engine-executor/src/main/scala/org/marvin/util/LocalCache.scala
+++ b/engine-executor/src/main/scala/org/marvin/util/LocalCache.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.util
+package org.apache.marvin.util
 
 import scalacache.{Cache, put, get, Entry}
 import scalacache.guava._
diff --git a/engine-executor/src/main/scala/org/marvin/util/ProtocolUtil.scala b/engine-executor/src/main/scala/org/marvin/util/ProtocolUtil.scala
index 9ffa042..cdc23df 100644
--- a/engine-executor/src/main/scala/org/marvin/util/ProtocolUtil.scala
+++ b/engine-executor/src/main/scala/org/marvin/util/ProtocolUtil.scala
@@ -14,10 +14,10 @@
  * limitations under the License.
  *
  */
-package org.marvin.util
+package org.apache.marvin.util
 
 import io.jvm.uuid.UUID
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.model.EngineMetadata
 
 import scala.collection.immutable.HashMap
 
diff --git a/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactS3SaverTest.scala b/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactS3SaverTest.scala
index bb0c029..4296f89 100644
--- a/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactS3SaverTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactS3SaverTest.scala
@@ -1,4 +1,4 @@
-package org.marvin.artifact.manager
+package org.apache.marvin.artifact.manager
 
 import java.io.File
 
@@ -9,9 +9,9 @@
 import com.amazonaws.services.s3.model.GetObjectRequest
 import com.typesafe.config.ConfigFactory
 import org.apache.hadoop.fs.Path
-import org.marvin.artifact.manager.ArtifactSaver.{SaveToLocal, SaveToRemote}
-import org.marvin.fixtures.MetadataMock
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.artifact.manager.ArtifactSaver.{SaveToLocal, SaveToRemote}
+import org.apache.marvin.fixtures.MetadataMock
+import org.apache.marvin.model.EngineMetadata
 import org.scalamock.scalatest.MockFactory
 import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike}
 
diff --git a/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactSaverTest.scala b/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactSaverTest.scala
index 8f997a2..3d949c7 100644
--- a/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactSaverTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactSaverTest.scala
@@ -14,9 +14,9 @@
  * limitations under the License.
  *
  */
-package org.marvin.artifact.manager
+package org.apache.marvin.artifact.manager
 
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.model.EngineMetadata
 import org.scalatest.{Matchers, WordSpec}
 
 class ArtifactSaverTest extends WordSpec with Matchers {
@@ -26,7 +26,7 @@
       val props = ArtifactSaver.build(new EngineMetadata("name",
         "version", "engineType", null, "artifactsRemotePath", "HDFS", "marvin-artifact-bucket", List("acquisitor"),
         3000, 3000, 3000, 3000, Option(3000), 3000, "testHost"))
-      assert(props.actorClass().toString == "class org.marvin.artifact.manager.ArtifactHdfsSaver")
+      assert(props.actorClass().toString == "class org.apache.marvin.artifact.manager.ArtifactHdfsSaver")
     }
   }
 
@@ -35,7 +35,7 @@
       val props = ArtifactSaver.build(new EngineMetadata("name",
         "version", "engineType", null, "artifactsRemotePath", "S3", "marvin-artifact-bucket", List("acquisitor"),
         3000, 3000, 3000, 3000, Option(3000), 3000, "testHost"))
-      assert(props.actorClass().toString == "class org.marvin.artifact.manager.ArtifactS3Saver")
+      assert(props.actorClass().toString == "class org.apache.marvin.artifact.manager.ArtifactS3Saver")
     }
   }
 
@@ -44,7 +44,7 @@
       val props = ArtifactSaver.build(new EngineMetadata("name",
         "version", "engineType", null, "artifactsRemotePath", "fs", "marvin-artifact-bucket", List("acquisitor"),
         3000, 3000, 3000, 3000, Option(3000), 3000, "testHost"))
-      assert(props.actorClass().toString == "class org.marvin.artifact.manager.ArtifactFSSaver")
+      assert(props.actorClass().toString == "class org.apache.marvin.artifact.manager.ArtifactFSSaver")
     }
   }
 }
diff --git a/engine-executor/src/test/scala/org/marvin/executor/EngineExecutorAppTest.scala b/engine-executor/src/test/scala/org/marvin/executor/EngineExecutorAppTest.scala
index d1ee0a4..87bfaa7 100644
--- a/engine-executor/src/test/scala/org/marvin/executor/EngineExecutorAppTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/executor/EngineExecutorAppTest.scala
@@ -14,14 +14,14 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor
+package org.apache.marvin.executor
 
 import akka.actor.{ActorRef, ActorSystem}
 import akka.testkit.{ImplicitSender, TestKit}
 import com.typesafe.config.ConfigFactory
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.executor.api.GenericAPIFunctions
-import org.marvin.fixtures.MetadataMock
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.executor.api.GenericAPIFunctions
+import org.apache.marvin.fixtures.MetadataMock
 import org.scalamock.scalatest.MockFactory
 import org.scalatest._
 
diff --git a/engine-executor/src/test/scala/org/marvin/executor/actions/BatchActionTest.scala b/engine-executor/src/test/scala/org/marvin/executor/actions/BatchActionTest.scala
index 8505256..cb783e9 100644
--- a/engine-executor/src/test/scala/org/marvin/executor/actions/BatchActionTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/executor/actions/BatchActionTest.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.actions
+package org.apache.marvin.executor.actions
 
 import java.time.LocalDateTime
 
@@ -22,13 +22,13 @@
 import akka.actor.{Actor, ActorRef, ActorSystem, Props}
 import akka.testkit.{EventFilter, ImplicitSender, TestActorRef, TestKit, TestProbe}
 import com.typesafe.config.ConfigFactory
-import org.marvin.artifact.manager.ArtifactSaver.{SaveToLocal, SaveToRemote}
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.executor.actions.BatchAction.{BatchExecute, BatchExecutionStatus, BatchHealthCheck, BatchReload}
-import org.marvin.executor.proxies.EngineProxy.{ExecuteBatch, HealthCheck, Reload}
-import org.marvin.fixtures.MetadataMock
-import org.marvin.model._
-import org.marvin.util.{JsonUtil, LocalCache}
+import org.apache.marvin.artifact.manager.ArtifactSaver.{SaveToLocal, SaveToRemote}
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.executor.actions.BatchAction.{BatchExecute, BatchExecutionStatus, BatchHealthCheck, BatchReload}
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteBatch, HealthCheck, Reload}
+import org.apache.marvin.fixtures.MetadataMock
+import org.apache.marvin.model._
+import org.apache.marvin.util.{JsonUtil, LocalCache}
 import org.scalamock.scalatest.MockFactory
 import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike}
 
diff --git a/engine-executor/src/test/scala/org/marvin/executor/actions/OnlineActionTest.scala b/engine-executor/src/test/scala/org/marvin/executor/actions/OnlineActionTest.scala
index 3d3053d..65d4bc0 100644
--- a/engine-executor/src/test/scala/org/marvin/executor/actions/OnlineActionTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/executor/actions/OnlineActionTest.scala
@@ -14,18 +14,18 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.actions
+package org.apache.marvin.executor.actions
 
 import akka.Done
 import akka.actor.{ActorRef, ActorSystem, Props}
 import akka.testkit.{EventFilter, ImplicitSender, TestKit, TestProbe}
 import com.typesafe.config.ConfigFactory
-import org.marvin.artifact.manager.ArtifactSaver.SaveToLocal
-import org.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck, OnlineReload}
-import org.marvin.executor.proxies.EngineProxy.{ExecuteOnline, HealthCheck, Reload}
-import org.marvin.executor.proxies.Reloaded
-import org.marvin.fixtures.MetadataMock
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.artifact.manager.ArtifactSaver.SaveToLocal
+import org.apache.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck, OnlineReload}
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteOnline, HealthCheck, Reload}
+import org.apache.marvin.executor.proxies.Reloaded
+import org.apache.marvin.fixtures.MetadataMock
+import org.apache.marvin.model.EngineMetadata
 import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike}
 
 import scala.concurrent.duration._
diff --git a/engine-executor/src/test/scala/org/marvin/executor/api/GenericAPITest.scala b/engine-executor/src/test/scala/org/marvin/executor/api/GenericAPITest.scala
index cc57fc6..bc49df8 100644
--- a/engine-executor/src/test/scala/org/marvin/executor/api/GenericAPITest.scala
+++ b/engine-executor/src/test/scala/org/marvin/executor/api/GenericAPITest.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.api
+package org.apache.marvin.executor.api
 
 import actions.HealthCheckResponse.Status
 import akka.actor.ActorRef
@@ -23,13 +23,13 @@
 import akka.http.scaladsl.server.Route
 import akka.http.scaladsl.testkit.ScalatestRouteTest
 import akka.testkit.TestProbe
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.executor.actions.BatchAction.{BatchExecute, BatchExecutionStatus, BatchHealthCheck, BatchReload}
-import org.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck}
-import org.marvin.executor.actions.PipelineAction.{PipelineExecute, PipelineExecutionStatus}
-import org.marvin.executor.statemachine.Reload
-import org.marvin.fixtures.MetadataMock
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.executor.actions.BatchAction.{BatchExecute, BatchExecutionStatus, BatchHealthCheck, BatchReload}
+import org.apache.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck}
+import org.apache.marvin.executor.actions.PipelineAction.{PipelineExecute, PipelineExecutionStatus}
+import org.apache.marvin.executor.statemachine.Reload
+import org.apache.marvin.fixtures.MetadataMock
+import org.apache.marvin.model.EngineMetadata
 import org.scalamock.scalatest.MockFactory
 import org.scalatest.{Inside, Matchers, WordSpec}
 import spray.json.{JsValue, _}
diff --git a/engine-executor/src/test/scala/org/marvin/executor/manager/ExecutorManagerTest.scala b/engine-executor/src/test/scala/org/marvin/executor/manager/ExecutorManagerTest.scala
index cd256bc..d7e0b84 100644
--- a/engine-executor/src/test/scala/org/marvin/executor/manager/ExecutorManagerTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/executor/manager/ExecutorManagerTest.scala
@@ -14,16 +14,16 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.manager
+package org.apache.marvin.executor.manager
 
 import akka.actor.{Actor, ActorLogging, ActorRef, ActorSystem, Props}
 import akka.pattern.ask
 import akka.testkit.{ImplicitSender, TestActorRef, TestKit}
 import akka.util.Timeout
 import com.typesafe.config.ConfigFactory
-import org.marvin.executor.api.GenericAPIFunctions
-import org.marvin.executor.manager.ExecutorManager.{GetMetadata, StopActor}
-import org.marvin.fixtures.MetadataMock
+import org.apache.marvin.executor.api.GenericAPIFunctions
+import org.apache.marvin.executor.manager.ExecutorManager.{GetMetadata, StopActor}
+import org.apache.marvin.fixtures.MetadataMock
 import org.scalamock.scalatest.MockFactory
 import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike}
 
diff --git a/engine-executor/src/test/scala/org/marvin/executor/proxies/BatchActionProxyTest.scala b/engine-executor/src/test/scala/org/marvin/executor/proxies/BatchActionProxyTest.scala
index 03d8e1e..7dbee7d 100644
--- a/engine-executor/src/test/scala/org/marvin/executor/proxies/BatchActionProxyTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/executor/proxies/BatchActionProxyTest.scala
@@ -1,4 +1,4 @@
-package org.marvin.executor.proxies
+package org.apache.marvin.executor.proxies
 
 import actions.BatchActionHandlerGrpc.BatchActionHandlerBlockingClient
 import actions._
@@ -6,9 +6,9 @@
 import akka.actor.{ActorSystem, Props}
 import akka.testkit.{ImplicitSender, TestKit}
 import com.typesafe.config.ConfigFactory
-import org.marvin.executor.proxies.EngineProxy.{ExecuteBatch, HealthCheck, Reload}
-import org.marvin.fixtures.MetadataMock
-import org.marvin.model.EngineActionMetadata
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteBatch, HealthCheck, Reload}
+import org.apache.marvin.fixtures.MetadataMock
+import org.apache.marvin.model.EngineActionMetadata
 import org.scalamock.scalatest.MockFactory
 import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike}
 
diff --git a/engine-executor/src/test/scala/org/marvin/executor/proxies/OnlineActionProxyTest.scala b/engine-executor/src/test/scala/org/marvin/executor/proxies/OnlineActionProxyTest.scala
index 081c0ba..d363da6 100644
--- a/engine-executor/src/test/scala/org/marvin/executor/proxies/OnlineActionProxyTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/executor/proxies/OnlineActionProxyTest.scala
@@ -1,4 +1,4 @@
-package org.marvin.executor.proxies
+package org.apache.marvin.executor.proxies
 
 import actions.OnlineActionHandlerGrpc.{OnlineActionHandler, OnlineActionHandlerBlockingClient}
 import actions._
@@ -7,9 +7,9 @@
 import akka.util.Timeout
 import scala.concurrent.duration._
 import com.typesafe.config.ConfigFactory
-import org.marvin.executor.proxies.EngineProxy.{ExecuteOnline, HealthCheck, Reload}
-import org.marvin.fixtures.MetadataMock
-import org.marvin.model.EngineActionMetadata
+import org.apache.marvin.executor.proxies.EngineProxy.{ExecuteOnline, HealthCheck, Reload}
+import org.apache.marvin.fixtures.MetadataMock
+import org.apache.marvin.model.EngineActionMetadata
 import org.scalamock.scalatest.MockFactory
 import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike}
 
diff --git a/engine-executor/src/test/scala/org/marvin/executor/statemachine/PredictorFSMTest.scala b/engine-executor/src/test/scala/org/marvin/executor/statemachine/PredictorFSMTest.scala
index abcae87..2164d45 100644
--- a/engine-executor/src/test/scala/org/marvin/executor/statemachine/PredictorFSMTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/executor/statemachine/PredictorFSMTest.scala
@@ -14,17 +14,17 @@
  * limitations under the License.
  *
  */
-package org.marvin.executor.statemachine
+package org.apache.marvin.executor.statemachine
 
 import actions.HealthCheckResponse.Status
 import actions.OnlineActionResponse
 import akka.actor.ActorSystem
 import akka.testkit.{EventFilter, ImplicitSender, TestFSMRef, TestKit, TestProbe}
 import com.typesafe.config.ConfigFactory
-import org.marvin.exception.MarvinEExecutorException
-import org.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck, OnlineReload}
-import org.marvin.executor.proxies.Reloaded
-import org.marvin.fixtures.MetadataMock
+import org.apache.marvin.exception.MarvinEExecutorException
+import org.apache.marvin.executor.actions.OnlineAction.{OnlineExecute, OnlineHealthCheck, OnlineReload}
+import org.apache.marvin.executor.proxies.Reloaded
+import org.apache.marvin.fixtures.MetadataMock
 import org.scalatest.{Matchers, WordSpecLike}
 
 class PredictorFSMTest extends TestKit(
diff --git a/engine-executor/src/test/scala/org/marvin/fixtures/MetadataMock.scala b/engine-executor/src/test/scala/org/marvin/fixtures/MetadataMock.scala
index 4a50908..6748b9c 100644
--- a/engine-executor/src/test/scala/org/marvin/fixtures/MetadataMock.scala
+++ b/engine-executor/src/test/scala/org/marvin/fixtures/MetadataMock.scala
@@ -14,9 +14,9 @@
  * limitations under the License.
  *
  */
-package org.marvin.fixtures
+package org.apache.marvin.fixtures
 
-import org.marvin.model.{EngineActionMetadata, EngineMetadata}
+import org.apache.marvin.model.{EngineActionMetadata, EngineMetadata}
 
 object MetadataMock {
 
diff --git a/engine-executor/src/test/scala/org/marvin/util/JsonUtilTest.scala b/engine-executor/src/test/scala/org/marvin/util/JsonUtilTest.scala
index 8d4fff6..d3f3c49 100644
--- a/engine-executor/src/test/scala/org/marvin/util/JsonUtilTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/util/JsonUtilTest.scala
@@ -14,12 +14,12 @@
  * limitations under the License.
  *
  */
-package org.marvin.util
+package org.apache.marvin.util
 
 import java.io.File
 
 import com.github.fge.jsonschema.core.exceptions.ProcessingException
-import org.marvin.model.EngineMetadata
+import org.apache.marvin.model.EngineMetadata
 import org.scalatest.{Matchers, WordSpec}
 
 import scala.io.Source
diff --git a/engine-executor/src/test/scala/org/marvin/util/LocalCacheTest.scala b/engine-executor/src/test/scala/org/marvin/util/LocalCacheTest.scala
index 4a146b6..54bfc4a 100644
--- a/engine-executor/src/test/scala/org/marvin/util/LocalCacheTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/util/LocalCacheTest.scala
@@ -14,7 +14,7 @@
  * limitations under the License.
  *
  */
-package org.marvin.util
+package org.apache.marvin.util
 
 import org.scalatest.{Matchers, WordSpec}
 
diff --git a/engine-executor/src/test/scala/org/marvin/util/ProtocolUtilTest.scala b/engine-executor/src/test/scala/org/marvin/util/ProtocolUtilTest.scala
index 8fb808a..a1eb793 100644
--- a/engine-executor/src/test/scala/org/marvin/util/ProtocolUtilTest.scala
+++ b/engine-executor/src/test/scala/org/marvin/util/ProtocolUtilTest.scala
@@ -14,10 +14,10 @@
  * limitations under the License.
  *
  */
-package org.marvin.util
+package org.apache.marvin.util
 
-import org.marvin.fixtures.MetadataMock
-import org.marvin.model.{EngineActionMetadata, EngineMetadata}
+import org.apache.marvin.fixtures.MetadataMock
+import org.apache.marvin.model.{EngineActionMetadata, EngineMetadata}
 import org.scalatest.{Matchers, WordSpec}
 
 class ProtocolUtilTest extends WordSpec with Matchers {
diff --git a/python-toolbox/setup.py b/python-toolbox/setup.py
index 29c479c..cec9ce1 100644
--- a/python-toolbox/setup.py
+++ b/python-toolbox/setup.py
@@ -82,7 +82,6 @@
     'idna>=2.5',
     'bleach>=1.5.0',
     'numpy>=1.16.2',
-    'Unidecode==1.0.23',
 ]
 
 # Test dependencies