revert-rename
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f0a548c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,49 @@
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.PHONY: help docker-base docker-python docker-r toolbox engine-server
+
+help:
+	@echo "    docker-base"
+	@echo "        Builds the base docker image with common dependecies among languages."
+	@echo "    docker-python"
+	@echo "        Builds a docker image that can run engines in Python."
+	@echo "    docker-r"
+	@echo "        Builds a docker image that can run engines in R."
+	@echo "    toolbox"
+	@echo "        Builds the toolbox and make it available for be included into docker images."
+	@echo "    engine-server"
+	@echo "        Builds a jar with the engine interpreter server."
+
+docker-base:
+	docker build -t marvin-base -f engine-server/build/Dockerfile engine-server/build
+
+docker-python:
+	$(MAKE) engine-server
+	$(MAKE) toolbox
+	docker build -t marvin-python -f engine-server/build/docker-python/Dockerfile engine-server/build
+
+docker-r:
+	$(MAKE) engine-server
+	$(MAKE) toolbox
+	docker build -t marvin-r -f engine-server/build/docker-r/Dockerfile engine-server/build
+
+engine-server:
+	cd engine-server && $(MAKE) package
+	mv engine-server/target/scala-2.12/marvin-engine-server-assembly-*.jar engine-server/build/marvin-engine-server-assembly.jar
+
+toolbox:
+	tar -cf engine-server/build/python-toolbox.tgz python-toolbox
\ No newline at end of file
diff --git a/README.md b/README.md
index ef7df0a..f890222 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@
 
 Branch | Status | CodeCov
 -|-|-
-[master](https://github.com/apache/incubator-marvin) | [![Build Status](https://travis-ci.org/apache/incubator-marvin.svg?branch=master)](https://travis-ci.org/apache/incubator-marvin) | [![Codecov](https://codecov.io/gh/apache/incubator-marvin/branch/master/graph/badge.svg)](https://codecov.io/gh/apache/incubator-marvin)
+[master](https://github.com/apache/incubator-marvin/tree/master) | [![Build Status](https://travis-ci.org/apache/incubator-marvin.svg?branch=master)](https://travis-ci.org/apache/incubator-marvin) | [![Codecov](https://codecov.io/gh/apache/incubator-marvin/branch/master/graph/badge.svg)](https://codecov.io/gh/apache/incubator-marvin)
 [develop](https://github.com/apache/incubator-marvin/tree/develop) | [![Build Status](https://travis-ci.org/apache/incubator-marvin.svg?branch=develop)](https://travis-ci.org/apache/incubator-marvin/branches) | [![Build Status](https://codecov.io/gh/apache/incubator-marvin/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-marvin/branch/develop)
 
 **Marvin** is an open-source Artificial Intelligence platform that focuses on helping data scientists deliver meaningful solutions to complex problems. Supported by a standardized large-scale, language-agnostic architecture, Marvin simplifies the process of exploration and modeling.
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/Dockerfile b/engine-executor/build/Dockerfile
new file mode 100644
index 0000000..bbf5394
--- /dev/null
+++ b/engine-executor/build/Dockerfile
@@ -0,0 +1,89 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+##############################################################
+# Base docker image for Marvin
+##############################################################
+FROM ubuntu:16.04
+
+ENV SLEEP_MILLIS 0
+
+USER root
+
+##############################################################
+# Creates the marvin user
+##############################################################
+RUN groupadd marvin && \
+    useradd marvin -mg marvin
+
+##############################################################
+# Define all environment variables to be used 
+##############################################################
+
+ENV MARVIN_HOME=/home/marvin
+ENV MARVIN_DATA_PATH=/home/marvin/marvin-data
+ENV MARVIN_ENGINE_HOME=$MARVIN_HOME/engine
+ENV MARVIN_ENGINE_ENV=marvin-engine-env
+
+
+##############################################################
+# Create all folders needed 
+##############################################################
+
+RUN mkdir -p $MARVIN_HOME && \
+    mkdir -p $MARVIN_DATA_PATH && \
+    mkdir -p $MARVIN_ENGINE_HOME && \
+    mkdir -p /var/log/marvin/engines && \
+    mkdir -p /var/run/marvin/engines
+
+
+##############################################################
+# Install the system dependencies for default installation 
+##############################################################
+
+RUN apt-get update -y && \
+    apt-get install -y build-essential && \
+    apt-get install -y maven git cmake software-properties-common curl libstdc++6 && \
+    apt-get install -y wget && \
+    apt-get install -y libffi-dev && \
+    apt-get install -y libssl-dev && \
+    apt-get install -y libxml2-dev && \
+    apt-get install -y libxslt1-dev && \
+    apt-get install -y libpng12-dev && \
+    apt-get install -y libfreetype6-dev && \
+    apt-get install -y libsasl2-dev && \
+    apt-get install -y graphviz && \
+    apt-get clean
+
+### Installs Open JDK 8
+RUN add-apt-repository ppa:openjdk-r/ppa && \
+    apt-get update && \
+    apt-get install -y openjdk-8-jdk
+
+## TODO - Think in a good way to make Spark an option as soon we implement docker supporting it
+##############################################################
+# Install Apache Spark
+#
+# Uncomment if you are using spark, note that is needed the 
+# spark configuration files to the think works correctly.
+##############################################################
+
+# RUN curl https://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.6.tgz -o /tmp/spark-2.1.1-bin-hadoop2.6.tgz && \
+#    tar -xf /tmp/spark-2.1.1-bin-hadoop2.6.tgz -C /opt/ && \
+#    ln -s /opt/spark-2.1.1-bin-hadoop2.6 /opt/spark
+
+# Add the b2w datalake config for Spark
+# ADD spark-conf.tar $SPARK_CONF_DIR
+# RUN mkdir -p $SPARK_CONF_DIR
\ No newline at end of file
diff --git a/engine-executor/build/docker-python/Dockerfile b/engine-executor/build/docker-python/Dockerfile
new file mode 100644
index 0000000..695be4c
--- /dev/null
+++ b/engine-executor/build/docker-python/Dockerfile
@@ -0,0 +1,59 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ARG BASE_TAG=latest
+FROM marvin-base:${BASE_TAG}
+
+##############################################################
+# Define all environment variables to be used 
+##############################################################
+ENV WORKON_HOME=$MARVIN_HOME/.virtualenvs
+
+##############################################################
+# Install python dependencies
+##############################################################
+
+RUN apt-get update -y && \
+    apt-get install -y python && \
+    apt-get install -y python2.7-dev && \
+    apt-get install -y python-pip && \
+    apt-get install -y ipython && \
+    # ??? apt-get install -y python-tk && \ ??? #
+    pip install --upgrade pip==9.0.1 && \
+    apt install -y libzmq3-dev libcurl4-openssl-dev libssl-dev && \
+    pip install jupyter && \
+    apt-get clean
+
+##############################################################
+# Copy and Install the marvin engine inside virtualenv
+##############################################################
+
+# adds the package containing the user-generated engine
+ADD python-toolbox.tgz $MARVIN_ENGINE_HOME
+
+# adds the freshly built engine server jar
+ADD marvin-engine-executor-assembly.jar $MARVIN_DATA_PATH 
+
+##############################################################
+# Starts the jupyter http server
+##############################################################
+
+EXPOSE 8888
+
+USER marvin
+
+RUN /bin/bash -c "cd $MARVIN_ENGINE_HOME/python-toolbox && pip install . --user"
+
+CMD /bin/bash -c "marvin --help"
\ No newline at end of file
diff --git a/engine-executor/build/docker-r/Dockerfile b/engine-executor/build/docker-r/Dockerfile
new file mode 100644
index 0000000..f732aec
--- /dev/null
+++ b/engine-executor/build/docker-r/Dockerfile
@@ -0,0 +1,63 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ARG BASE_TAG=latest
+FROM marvin-base:${BASE_TAG}
+
+##############################################################
+# Create all folders needed 
+##############################################################
+
+
+##############################################################
+# Install the system dependencies for default R installation 
+##############################################################
+
+RUN apt install -y apt-transport-https &&\
+    apt update && \
+    apt install -y python2.7-dev && \
+    apt install -y python-pip && \
+    apt install -y ipython && \
+    pip install --upgrade pip==9.0.1 && \
+    apt install -y libzmq3-dev libcurl4-openssl-dev libssl-dev && \
+    pip install jupyter
+    
+
+RUN apt install -y r-base && \
+    su -c "R -e \"install.packages(c('repr', 'IRdisplay', 'IRkernel'), type = 'source', repos='http://cran.rstudio.com/')\"" && \
+    su -c "R -e \"IRkernel::installspec(user = FALSE)\""
+
+
+##############################################################
+# Copy and Install the marvin engine inside virtualenv
+##############################################################
+
+### TODO - Uncomment this block once we have the common lib for R tested and we can run engines in R
+
+# adds the package containing the user-generated engine
+#ADD generated-engine $MARVIN_ENGINE_HOME
+
+# adds the freshly built engine server jar
+#ADD marvin-engine-executor-assembly.jar $MARVIN_DATA_PATH 
+
+##############################################################
+# Starts the jupyter http server
+##############################################################
+
+EXPOSE 8888
+
+USER marvin
+
+CMD /bin/bash -c "jupyter notebook --ip=0.0.0.0 --notebook-dir=$MARVIN_HOME"
\ No newline at end of file
diff --git a/engine-executor/build/marvin-engine-executor-assembly.jar b/engine-executor/build/marvin-engine-executor-assembly.jar
new file mode 100644
index 0000000..ff8a8f4
--- /dev/null
+++ b/engine-executor/build/marvin-engine-executor-assembly.jar
Binary files differ
diff --git a/engine-executor/build/python-toolbox.tgz b/engine-executor/build/python-toolbox.tgz
new file mode 100644
index 0000000..86b60d1
--- /dev/null
+++ b/engine-executor/build/python-toolbox.tgz
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 5c52e42..cec9ce1 100644
--- a/python-toolbox/setup.py
+++ b/python-toolbox/setup.py
@@ -77,11 +77,11 @@
     'joblib>=0.11',
     'autopep8>=1.3.3',
     'progressbar2>=3.34.3',
-    'urllib3>=1.21.1',
+    'urllib3==1.21.1',
+    'unidecode==1.0.23',
     'idna>=2.5',
     'bleach>=1.5.0',
     'numpy>=1.16.2',
-    'Unidecode==1.0.23',
 ]
 
 # Test dependencies