Added Titanic Engine to Marvin Public Engines (#8)

* Added Titanic Engine to Marvin Public Engines

* Update messages to include the addition of Fare to predictor set

* mac dependency fix in travis

* virtual env update in travis

* alternative pip installation test in MacOS Env

* mac pip installation fix

* installing pip correctly

* Fixes to shuffle split and naming convention for input messages

* unit tests added

* all engine aligned with toolbox v0.0.3

* python 2 and 3 compatibility fix

* test dependencies update #104

* all engine test dependency update #104

* align back to master

* python 2 and 3 compatibility fix

* fix to work with last version of toolbox
diff --git a/.travis.yml b/.travis.yml
index 67a8720..3a93fe0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -35,6 +35,7 @@
   - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkvirtualenv image-classification-engine-env    ; fi
   - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkvirtualenv product-classifier-engine-env         ; fi
   - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkvirtualenv mnist-keras-engine-env     ; fi
+  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkvirtualenv kaggle-titanic-engine-env         ; fi
 
 script:
   - cd nlp-ner-engine
@@ -59,4 +60,8 @@
   - cd ..
   - cd product-classifier-engine
   - make clean marvin
+  - marvin test
+  - cd ..
+  - cd kaggle-titanic-engine
+  - make clean marvin
   - marvin test
\ No newline at end of file
diff --git a/image-classification-engine/Makefile b/image-classification-engine/Makefile
index 0468ae6..cfbedd5 100644
--- a/image-classification-engine/Makefile
+++ b/image-classification-engine/Makefile
@@ -31,7 +31,7 @@
 	@echo "        Remove marvin setup.py dependencies."
 
 marvin:
-	pip install -e . --process-dependency-links
+	pip install -e ".[testing]" --process-dependency-links
 	marvin --help
 
 update:
diff --git a/image-classification-engine/setup.py b/image-classification-engine/setup.py
index 8414cf3..e028d22 100644
--- a/image-classification-engine/setup.py
+++ b/image-classification-engine/setup.py
@@ -4,6 +4,14 @@
 from setuptools import setup, find_packages
 from setuptools.command.test import test as TestCommand
 
+REQUIREMENT_TESTS = [
+    'pytest>=2.6.4',
+    'pytest-cov>=1.8.1',
+    'mock>=2.0.0',
+    'virtualenv>=15.0.1',
+    'tox>=2.2.0'
+]
+
 
 def _get_version():
     """Return the project version from VERSION file."""
@@ -79,13 +87,10 @@
         'h5py==2.7.1',
     ],
     dependency_links=['git+https://github.com/marvin-ai/marvin-python-toolbox.git/@master#egg=marvin_python_toolbox-0'],
-    tests_require=[
-        'pytest>=2.6.4',
-        'pytest-cov>=1.8.1',
-        'mock>=2.0.0',
-        'virtualenv>=15.0.1',
-        'tox>=2.2.0',
-    ],
+    tests_require=REQUIREMENT_TESTS,
+    extras_require={
+        'testing': REQUIREMENT_TESTS,
+    },
     cmdclass={
         'test': Tox,
     },
diff --git a/iris-species-engine/Makefile b/iris-species-engine/Makefile
index e18ffb8..984ac42 100644
--- a/iris-species-engine/Makefile
+++ b/iris-species-engine/Makefile
@@ -31,7 +31,7 @@
 	@echo "        Remove marvin setup.py dependencies."
 
 marvin:
-	pip install -e . --process-dependency-links
+	pip install -e ".[testing]" --process-dependency-links
 	marvin --help
 
 update:
diff --git a/iris-species-engine/setup.py b/iris-species-engine/setup.py
index 13d1f5d..2d86e4c 100644
--- a/iris-species-engine/setup.py
+++ b/iris-species-engine/setup.py
@@ -4,6 +4,14 @@
 from setuptools import setup, find_packages
 from setuptools.command.test import test as TestCommand
 
+REQUIREMENT_TESTS = [
+    'pytest>=2.6.4',
+    'pytest-cov>=1.8.1',
+    'mock>=2.0.0',
+    'virtualenv>=15.0.1',
+    'tox>=2.2.0'
+]
+
 
 def _get_version():
     """Return the project version from VERSION file."""
@@ -76,13 +84,10 @@
         'seaborn==0.8.1'
     ],
     dependency_links=['git+https://github.com/marvin-ai/marvin-python-toolbox.git/@master#egg=marvin_python_toolbox-0'],
-    tests_require=[
-        'pytest>=2.6.4',
-        'pytest-cov>=1.8.1',
-        'mock>=2.0.0',
-        'virtualenv>=15.0.1',
-        'tox>=2.2.0',
-    ],
+    tests_require=REQUIREMENT_TESTS,
+    extras_require={
+        'testing': REQUIREMENT_TESTS,
+    },
     cmdclass={
         'test': Tox,
     },
diff --git a/kaggle-titanic-engine/.bumpversion.cfg b/kaggle-titanic-engine/.bumpversion.cfg
new file mode 100644
index 0000000..f565ac9
--- /dev/null
+++ b/kaggle-titanic-engine/.bumpversion.cfg
@@ -0,0 +1,5 @@
+[bumpversion]
+current_version = 0.0.1
+
+[bumpversion:file:marvin_titanic_engine/VERSION]
+[bumpversion:file:README.md]
\ No newline at end of file
diff --git a/kaggle-titanic-engine/.coveragerc b/kaggle-titanic-engine/.coveragerc
new file mode 100644
index 0000000..6ebe78e
--- /dev/null
+++ b/kaggle-titanic-engine/.coveragerc
@@ -0,0 +1,22 @@
+[run]
+omit = tests/*
+branch = True
+
+[report]
+exclude_lines =
+    pragma: no cover
+
+    def __repr__
+    if self\.debug
+
+    raise AssertionError
+    raise NotImplementedError
+
+    if 0:
+    if __name__ == .__main__.:
+
+[html]
+directory = coverage_report
+
+[xml]
+output = coverage_report.xml
\ No newline at end of file
diff --git a/kaggle-titanic-engine/.gitignore b/kaggle-titanic-engine/.gitignore
new file mode 100644
index 0000000..08a3a9a
--- /dev/null
+++ b/kaggle-titanic-engine/.gitignore
@@ -0,0 +1,15 @@
+.cache
+.eggs
+.tox
+.testmondata
+.coverage
+.coverage.*
+coverage_report.xml
+coverage_report
+*.egg
+*.egg-info
+*.pyc
+tests/__pycache__
+.DS_Store
+.packages
+.profiling
\ No newline at end of file
diff --git a/kaggle-titanic-engine/CHANGES.md b/kaggle-titanic-engine/CHANGES.md
new file mode 100644
index 0000000..4835f6f
--- /dev/null
+++ b/kaggle-titanic-engine/CHANGES.md
@@ -0,0 +1,5 @@
+## Changes log
+
+### 0.0.1
+
+ - initial version
\ No newline at end of file
diff --git a/kaggle-titanic-engine/Dockerfile b/kaggle-titanic-engine/Dockerfile
new file mode 100644
index 0000000..3f7107d
--- /dev/null
+++ b/kaggle-titanic-engine/Dockerfile
@@ -0,0 +1,122 @@
+FROM ubuntu:16.04
+
+MAINTAINER jeremy.elster@b2wdigital.com
+
+ENV SLEEP_MILLIS 0
+
+USER root
+
+##############################################################
+# Define all environment variables to be used 
+##############################################################
+
+ENV MARVIN_HOME=/opt/marvin
+ENV MARVIN_DATA_PATH=/marvin-data
+ENV MARVIN_ENGINE_HOME=$MARVIN_HOME/engine
+ENV MARVIN_ENGINE_ENV=marvin-engine-env
+ENV WORKON_HOME=$MARVIN_HOME/.virtualenvs
+ENV SPARK_HOME=/opt/spark
+ENV SPARK_CONF_DIR=$SPARK_HOME/conf
+ENV HADOOP_CONF_DIR=$SPARK_CONF_DIR
+ENV YARN_CONF_DIR=$SPARK_CONF_DIR
+
+
+##############################################################
+# 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 python cmake software-properties-common curl libstdc++6 && \
+    apt-get install -y git && \
+    apt-get install -y wget && \
+    apt-get install -y python2.7-dev && \
+    apt-get install -y python-pip && \
+    apt-get install -y ipython && \
+    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 python-tk && \
+    apt-get install -y libsasl2-dev && \
+    apt-get install -y python-pip && \
+    apt-get install -y graphviz && \
+    pip install --upgrade pip && \
+    apt-get clean
+
+RUN pip install virtualenvwrapper
+
+# Install Oracle JDK
+RUN add-apt-repository ppa:webupd8team/java -y && \
+    apt-get -qq update && \
+    echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
+    echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-selections && \
+    apt-get install -y oracle-java8-installer    
+
+
+##############################################################
+# 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
+
+##############################################################
+# Create the virtualenv configuration
+##############################################################
+
+RUN /bin/bash -c "cd $MARVIN_ENGINE_HOME && \
+    source /usr/local/bin/virtualenvwrapper.sh && \
+    mkvirtualenv $MARVIN_ENGINE_ENV"
+
+
+##############################################################
+#        <CUSTOM ENGINE INSTALLATION PROCEDURE HERE>         #
+##############################################################
+
+
+##############################################################
+# Copy and Install the marvin engine inside virtualenv
+##############################################################
+
+ADD build/engine.tar $MARVIN_ENGINE_HOME
+
+ADD build/marvin-engine-executor-assembly.jar $MARVIN_DATA_PATH 
+
+RUN /bin/bash -c "source /usr/local/bin/virtualenvwrapper.sh && \
+    workon $MARVIN_ENGINE_ENV && \
+    cd $MARVIN_ENGINE_HOME && \
+    pip install . --process-dependency-links"
+
+
+##############################################################
+# Starts the engine http server
+##############################################################
+
+EXPOSE 8000
+
+CMD /bin/bash -c "source /usr/local/bin/virtualenvwrapper.sh && \
+    workon $MARVIN_ENGINE_ENV && \
+    cd $MARVIN_ENGINE_HOME && \
+    marvin engine-httpserver -h 0.0.0.0 -p 8000"
\ No newline at end of file
diff --git a/kaggle-titanic-engine/INSTALL b/kaggle-titanic-engine/INSTALL
new file mode 100644
index 0000000..fccdaf8
--- /dev/null
+++ b/kaggle-titanic-engine/INSTALL
@@ -0,0 +1 @@
+REPLACE: Add here the detailed instructions to install this project
\ No newline at end of file
diff --git a/kaggle-titanic-engine/LICENSE b/kaggle-titanic-engine/LICENSE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/kaggle-titanic-engine/LICENSE
diff --git a/kaggle-titanic-engine/MANIFEST.in b/kaggle-titanic-engine/MANIFEST.in
new file mode 100644
index 0000000..8dceae3
--- /dev/null
+++ b/kaggle-titanic-engine/MANIFEST.in
@@ -0,0 +1,9 @@
+include CHANGES.md
+include INSTALL
+include LICENSE
+include MANIFEST.in
+include README.md
+include marvin_titanic_engine/VERSION
+recursive-include notebooks *
+prune notebooks/build
+recursive-include tests *
\ No newline at end of file
diff --git a/kaggle-titanic-engine/Makefile b/kaggle-titanic-engine/Makefile
new file mode 100644
index 0000000..0b99ad4
--- /dev/null
+++ b/kaggle-titanic-engine/Makefile
@@ -0,0 +1,70 @@
+.PHONY: help marvin update clean-pyc clean-build clean-reports clean-deps clean docker-build docker-push docker-run
+
+DOCKER_VERSION?=0.00.01
+DOCKER_REGISTRY_ADRESS?=docker.registry.io
+MARVIN_DATA_PATH?=$(HOME)/marvin/data
+MARVIN_ENGINE_NAME?=titanic
+MARVIN_TOOLBOX_VERSION?=0.0.3
+
+help:
+	@echo "    marvin"
+	@echo "        Prepare project to be used as a marvin package."
+	@echo "    update"
+	@echo "        Reinstall requirements and setup.py dependencies."
+	@echo "    clean"
+	@echo "        Remove all generated artifacts."
+	@echo "    clean-pyc"
+	@echo "        Remove python artifacts."
+	@echo "    clean-build"
+	@echo "        Remove build artifacts."
+	@echo "    clean-reports"
+	@echo "        Remove coverage reports."
+	@echo "    clean-deps"
+	@echo "        Remove marvin setup.py dependencies."
+	@echo "    docker-build"
+	@echo "        Runs the docker build command with marvin env default parameters."
+	@echo "    docker-push"
+	@echo "        Runs the docker push command with marvin env default parameters."
+	@echo "    docker-run"
+	@echo "        Runs the docker run command with marvin env default parameters."
+
+marvin:
+	pip install -e ".[testing]" --process-dependency-links
+	marvin --help
+
+update:
+	pip install -e . -U --process-dependency-links
+
+clean-pyc:
+	find . -name '*.pyc' -exec rm -f {} +
+	find . -name '*.pyo' -exec rm -f {} +
+	find . -name '*~' -exec rm -f  {} +
+
+clean-build:
+	rm -rf *.egg-info
+	rm -rf .cache
+	rm -rf .eggs
+	rm -rf dist
+	rm -rf build
+
+clean-reports:
+	rm -rf coverage_report/
+	rm -f coverage.xml
+	rm -f .coverage
+
+clean-deps:
+	pip freeze | grep -v "^-e" | xargs pip uninstall -y
+
+clean: clean-build clean-pyc clean-reports clean-deps
+
+docker-build: clean-build
+	mkdir -p build
+	tar -cf build/engine.tar --exclude=*.log --exclude=*.pkl --exclude='build' --exclude='notebooks' --exclude=*.tar *
+	cp -f $(MARVIN_DATA_PATH)/marvin-engine-executor-assembly-$(MARVIN_TOOLBOX_VERSION).jar build/marvin-engine-executor-assembly.jar
+	sudo docker build -t $(DOCKER_REGISTRY_ADRESS)/$(MARVIN_ENGINE_NAME):$(DOCKER_VERSION) .
+
+docker-run:
+	sudo docker run --name=marvin-$(MARVIN_ENGINE_NAME)-$(DOCKER_VERSION) --mount type=bind,source=$(MARVIN_DATA_PATH),destination=/marvin-data -p 8000:8000 $(DOCKER_REGISTRY_ADRESS)/$(MARVIN_ENGINE_NAME):$(DOCKER_VERSION)
+
+docker-push:
+	sudo docker push $(DOCKER_REGISTRY_ADRESS)/$(MARVIN_ENGINE_NAME):$(DOCKER_VERSION)
\ No newline at end of file
diff --git a/kaggle-titanic-engine/README.md b/kaggle-titanic-engine/README.md
new file mode 100644
index 0000000..54905fc
--- /dev/null
+++ b/kaggle-titanic-engine/README.md
@@ -0,0 +1,143 @@
+# titanic v0.0.1
+
+## Overview
+
+a look at the kaggle data for the titanic
+
+
+## Requirements
+
+_REPLACE: Add here the list of requirements. For example:_
+
+ - Python 2.7
+ - Numpy 1.11.0 or higher
+
+
+## Installation
+
+Use the Marvin toolbox to provision, deploy and start the remote HTTP server.
+
+First, edit the `marvin.ini` file, setting the options within the
+`ssh_deployment` section:
+
+1. `host`: the host IP address or name where the engine should be deployed. You
+can enable multi-host deployment using `,` to separate hosts
+2. `port`: the SSH connection port
+3. `user`: the SSH connection username. Currently, only a single user is
+supported. This user should be capable of *passwordless sudo*, although it can
+use password for the SSH connection
+
+Next, ensure that the remotes servers are provisioned (all required software
+are installed):
+
+    marvin engine-deploy --provision
+
+Next, package your engine:
+
+    marvin engine-deploy --package
+
+This will create a compressed archive containing your engine code under the
+`.packages` directory.
+
+Next, deploy your engine to remotes servers:
+
+    marvin engine-deploy
+
+By default, a dependency clean will be executed at each deploy. You can skip it
+using:
+
+    marvin engine-deploy --skip-clean
+
+Next, you can start the HTTP server in the remotes servers:
+
+    marvin engine-httpserver-remote start
+
+You can check if the HTTP server is running:
+
+    marvin engine-httpserver-remote status
+
+And stop it:
+
+    marvin engine-httpserver-remote stop
+
+After starting, you can test it by making a HTTP request to any endpoint, like:
+
+    curl -v http://example.com/predictor/health
+
+Under the hood, this engine uses Fabric to define provisioning and deployment
+process. Check the `fabfile.py` for more information. You can add new tasks or
+edit existing ones to match your provisioning and deployment pipeline.
+
+## Development
+
+### Getting started
+
+First, create a new virtualenv
+
+```
+mkvirtualenv marvin_titanic_engine_env
+```
+
+Now install the development dependencies
+
+```
+make marvin
+```
+
+You are now ready to code.
+
+
+### Adding new dependencies
+
+It\`s very important. All development dependencies should be added to `setup.py`.
+
+### Running tests
+
+This project uses *[py.test](http://pytest.org/)* as test runner and *[Tox](https://tox.readthedocs.io)* to manage virtualenvs.
+
+To run all tests use the following command
+
+```
+marvin test
+```
+
+To run specific test
+
+```
+marvin test tests/test_file.py::TestClass::test_method
+```
+
+
+### Writting documentation
+
+The project documentation is written using *[Jupyter](http://jupyter.readthedocs.io/)* notebooks. 
+You can start the notebook server from the command line by running the following command
+
+```
+marvin notebook
+```
+
+Use notebooks to demonstrate how to use the lib features. It can also be useful to show some use cases.
+
+
+### Bumping version
+
+```
+marvin pkg-bumpversion [patch|minor|major]
+git add . && git commit -m "Bump version"
+```
+
+
+### Tagging version
+
+```
+marvin pkg-createtag
+git push origin master --follow-tags
+```
+
+
+### Logging
+
+The default log level is set to _WARNING_. You can change the log level at runtime setting another value to one of the following environment variable: `MARVIN_TITANIC_ENGINE_LOG_LEVEL` or `LOG_LEVEL`. The available values are _CRITICAL_, _ERROR_, _WARNING_, _INFO_ and _DEBUG_.
+
+Be careful using `LOG_LEVEL`, it may affect another lib.
diff --git a/kaggle-titanic-engine/docs.yaml b/kaggle-titanic-engine/docs.yaml
new file mode 100644
index 0000000..993e8c8
--- /dev/null
+++ b/kaggle-titanic-engine/docs.yaml
@@ -0,0 +1,567 @@
+openapi: "3.0.0"
+info:
+  version: 0.0.1
+  title: marvin_titanic_engine API Doc
+  contact:
+      name: mantainer jeremy.elster
+      email: jeremy.elster@b2wdigital.com
+      url: https://github.com/marvin-ai
+  license:
+    name: Apache License 2.0
+servers:
+  - url: http://localhost:8000
+  - url: http://0.0.0.0:8000
+tags:
+  - name: Docker
+    description: For Docker users, please use "make docker-build" and "make docker-run" commands in your engine virtualenv to start the server
+  - name: Acquisitor
+    description: Setup the initial_dataset with all cleaned data necessary to build your dataset in the next action
+  - name: Tpreparator
+    description: Setup the dataset with the transformed data that is compatible with the algorithm used to build the model in the next action
+  - name: Trainer
+    description: Setup the model with the result of the algorithm used to training
+  - name: Evaluator
+    description: Setup the metrics with the result of the algorithms used to test the model
+  - name: Predictor
+    description: Return the predicted value in a json parsable object format
+  - name: Feedback
+    description: Receive feedback message, user can manipulate this message for any use
+  - name: Pipeline
+    description: Perform all batch actions in your right order
+paths:
+  /acquisitor/health:
+    get:
+      summary: Get acquisitor's service health
+      operationId: getHealth
+      tags:
+        - Acquisitor
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /acquisitor/status:
+    get:
+      summary: Get acquisitor's service status
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      operationId: getStatus
+      tags:
+        - Acquisitor
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /acquisitor:
+    post:
+      summary: Run acquisitor
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: acquisit
+      tags:
+        - Acquisitor
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /tpreparator/health:
+    get:
+      summary: Get trainer preparator's service health
+      operationId: tpreparator
+      tags:
+        - Tpreparator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /tpreparator/status:
+    get:
+      summary: Get trainer preparator's service status
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      operationId: getStatus
+      tags:
+        - Tpreparator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /tpreparator/reload?protocol=:
+    put:
+      summary: Reload artifact for trainer preparator
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: tpreparator
+      tags:
+        - Tpreparator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /tpreparator:
+    post:
+      summary: Run trainer preparator
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: tpreparator
+      tags:
+        - Tpreparator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /trainer/health:
+    get:
+      summary: Get trainer's service health
+      operationId: trainer
+      tags:
+        - Trainer
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /trainer/status:
+    get:
+      summary: Get trainer's service status
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      operationId: getStatus
+      tags:
+        - Trainer
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /trainer/reload?protocol=:
+    put:
+      summary: Reload artifact for trainer
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: trainer
+      tags:
+        - Trainer
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /trainer:
+    post:
+      summary: Run trainer
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: trainer
+      tags:
+        - Trainer
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /evaluator/health:
+    get:
+      summary: Get evaluator's service health
+      operationId: evaluator
+      tags:
+        - Evaluator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /evaluator/status:
+    get:
+      summary: Get evaluator's service status
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      operationId: getStatus
+      tags:
+        - Evaluator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /evaluator/metrics?protocol=:
+    get:
+      summary: Get metrics's value
+      parameters: 
+        - in: query
+          name: protocol
+          schema: 
+            type: string
+          required: true
+          description: Metrics protocol value
+      operationId: getMetrics
+      tags:
+        - Evaluator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /evaluator/reload?protocol=:
+    put:
+      summary: Reload artifact for evaluator
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      operationId: evaluator
+      tags:
+        - Evaluator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /evaluator:
+    post:
+      summary: Run evaluator
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: evaluator
+      tags:
+        - Evaluator
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /predictor/health:
+    get:
+      summary: Get predictor's service health
+      operationId: getHealth
+      tags:
+        - Predictor
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /predictor/status:
+    get:
+      summary: Get predictor's service status
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      operationId: getStatus
+      tags:
+        - Predictor
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /predictor/reload?protocol=:
+    put:
+      summary: Reload artifact for predictor
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: reloadArtifact
+      tags:
+        - Predictor
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /predictor:
+    post:
+      summary: Run predictor
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: predict
+      tags:
+        - Predictor
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /feedback/health:
+    get:
+      summary: Get feedback's service health
+      operationId: feedback
+      tags:
+        - Feedback
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /feedback/status:
+    get:
+      summary: Get feedback's service status
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      operationId: getStatus
+      tags:
+        - Feedback
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /feedback/reload?protocol=:
+    put:
+      summary: Reload artifact for feedback
+      parameters: 
+        - in: query
+          name: protocol
+          schema:
+            type: string
+          required: true
+          description: The Protocol value generated from last action
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: reloadArtifact
+      tags:
+        - Feedback
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /feedback:
+    post:
+      summary: Run feedback
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: feedback
+      tags:
+        - Feedback
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
+  /pipeline:
+    post:
+      summary: Do all batch actions (from Acquisitor to Evaluator)
+      requestBody:
+        description: The default value for body is an empty json object
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+      operationId: pipeline
+      tags:
+        - Pipeline
+      responses:
+        '200':
+          description: Result Message / Success
+        '400':
+          description: Bad Request / Illegal Argument / Missing Parameters
+        '500':
+          description: Internal Server Error / Timeout
+        '503':
+          description: Service Unavailable
\ No newline at end of file
diff --git a/kaggle-titanic-engine/engine.messages b/kaggle-titanic-engine/engine.messages
new file mode 100644
index 0000000..1666cc3
--- /dev/null
+++ b/kaggle-titanic-engine/engine.messages
@@ -0,0 +1 @@
+[{"Age": 50, "Pclass": 3, "Sex": 0, "Fare":5}]
diff --git a/kaggle-titanic-engine/engine.metadata b/kaggle-titanic-engine/engine.metadata
new file mode 100644
index 0000000..e6ae726
--- /dev/null
+++ b/kaggle-titanic-engine/engine.metadata
@@ -0,0 +1,62 @@
+{
+	"name": "titanic",
+	"version": "v0.0.1",
+	"engineType": "python",
+	"artifactsRemotePath": "/tmp/marvin",
+	"artifactManagerType": "FS",
+	"onlineActionTimeout": 1000,
+    "healthCheckTimeout": 2000,
+    "metricsTimeout": 10000,
+	"reloadTimeout": 600000,
+	"batchActionTimeout": 600000,
+	"pipelineActions": ["acquisitor", "tpreparator", "trainer", "evaluator"],
+	"actions": [{
+		"name": "acquisitor",
+		"actionType": "batch",
+		"port": 50051,
+		"host": "localhost",
+		"artifactsToPersist": ["initialdataset"],
+		"artifactsToLoad": [],
+		"pipeline": []
+	}, {
+		"name": "tpreparator",
+		"actionType": "batch",
+		"port": 50052,
+		"host": "localhost",
+		"artifactsToPersist": ["dataset"],
+		"artifactsToLoad": ["initialdataset"],
+		"pipeline": []
+	}, {
+		"name": "trainer",
+		"actionType": "batch",
+		"port": 50053,
+		"host": "localhost",
+		"artifactsToPersist": ["model"],
+		"artifactsToLoad": ["dataset"],
+		"pipeline": []
+	}, {
+		"name": "evaluator",
+		"actionType": "batch",
+		"port": 50054,
+		"host": "localhost",
+		"artifactsToPersist": ["metrics"],
+		"artifactsToLoad": ["dataset", "model"],
+		"pipeline": []
+	}, {
+		"name": "predictor",
+		"actionType": "online",
+		"port": 50055,
+		"host": "localhost",
+		"artifactsToPersist": [],
+		"artifactsToLoad": ["model", "metrics"],
+		"pipeline": ["ppreparator"]
+	}, {
+		"name": "feedback",
+		"actionType": "online",
+		"port": 50056,
+		"host": "localhost",
+		"artifactsToPersist": [],
+		"artifactsToLoad": [],
+		"pipeline": []
+	}]
+}
\ No newline at end of file
diff --git a/kaggle-titanic-engine/engine.params b/kaggle-titanic-engine/engine.params
new file mode 100644
index 0000000..04a0890
--- /dev/null
+++ b/kaggle-titanic-engine/engine.params
@@ -0,0 +1,17 @@
+{
+    "svm": [
+        {"C": [1, 10, 100], "gamma": [0.01, 0.001], "kernel": ["linear"]},
+        {"C": [1, 10, 100], "gamma": [0.01, 0.001],"kernel": ["rbf"]}
+    ],
+    "rf": {
+        "max_depth": [3],
+        "random_state": [0],
+        "min_samples_split": [2],
+        "min_samples_leaf": [1],
+        "n_estimators": [20],
+        "bootstrap": [true, false],
+        "criterion": ["gini", "entropy"]
+    },
+    "pred_cols": ["Age", "Pclass", "Sex", "Fare"],
+    "dep_var": "Survived"
+}
\ No newline at end of file
diff --git a/kaggle-titanic-engine/fabfile.py b/kaggle-titanic-engine/fabfile.py
new file mode 100644
index 0000000..3e5a8e6
--- /dev/null
+++ b/kaggle-titanic-engine/fabfile.py
@@ -0,0 +1,188 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+
+from fabric.api import env
+from fabric.api import run
+from fabric.api import execute
+from fabric.api import cd
+from fabric.api import local
+from fabric.api import put
+from fabric.api import sudo
+from fabric.state import output
+from marvin_python_toolbox import __version__ as TOOLBOX_VERSION
+from marvin_python_toolbox.common.config import Config
+
+_host = Config.get("host", section="ssh_deployment").split(",")
+_port = Config.get("port", section="ssh_deployment")
+_user = Config.get("user", section="ssh_deployment")
+
+for h in _host:
+    env.hosts.append("{user}@{host}:{port}".format(user=_user, host=h, port=_port))
+
+output["everything"] = False
+output["running"] = True
+
+env.package = "marvin_titanic_engine"
+env.margin_engine_executor_prefix = "/opt/marvin/engine-executor"
+env.margin_engine_executor_jar = "marvin-engine-executor-assembly-{version}.jar".format(version=TOOLBOX_VERSION)
+env.marvin_engine_executor_path = env.margin_engine_executor_prefix + "/" + env.margin_engine_executor_jar
+
+
+def install_oracle_jdk():
+    sudo("add-apt-repository ppa:webupd8team/java -y")
+    sudo("apt-get -qq update")
+    run("echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections")
+    run("echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections")
+    sudo("apt-get install -y oracle-java8-installer")
+
+
+def install_virtualenvwrapper():
+    run("pip install virtualenvwrapper")
+    run("echo 'export WORKON_HOME=${HOME}/.virtualenvs' >> ${HOME}/.profile")
+    run("echo 'source /usr/local/bin/virtualenvwrapper.sh' >> ${HOME}/.profile")
+
+
+def install_apache_spark():
+    run("curl https://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.6.tgz -o /tmp/spark-2.1.1-bin-hadoop2.6.tgz")
+    sudo("tar -xf /tmp/spark-2.1.1-bin-hadoop2.6.tgz -C /opt/")
+    sudo("ln -s /opt/spark-2.1.1-bin-hadoop2.6 /opt/spark")
+    run("echo 'export SPARK_HOME=/opt/spark' >> ${HOME}/.profile")
+
+
+def install_required_packages():
+    sudo("apt-get update -y")
+    sudo("apt-get install -y git")
+    sudo("apt-get install -y wget")
+    sudo("apt-get install -y python2.7-dev")
+    sudo("apt-get install -y python-pip")
+    sudo("apt-get install -y ipython")
+    sudo("apt-get install -y libffi-dev")
+    sudo("apt-get install -y libssl-dev")
+    sudo("apt-get install -y libxml2-dev")
+    sudo("apt-get install -y libxslt1-dev")
+    sudo("apt-get install -y libpng12-dev")
+    sudo("apt-get install -y libfreetype6-dev")
+    sudo("apt-get install -y python-tk")
+    sudo("apt-get install -y libsasl2-dev")
+    sudo("apt-get install -y python-pip")
+    sudo("apt-get install -y graphviz")
+    sudo("pip install --upgrade pip")
+
+
+def install_marvin_engine_executor():
+    sudo("mkdir -p {prefix}".format(prefix=env.margin_engine_executor_prefix))
+    with cd("{prefix}".format(prefix=env.margin_engine_executor_prefix)):
+        sudo("wget https://s3.amazonaws.com/marvin-engine-executor/{jar}".format(jar=env.margin_engine_executor_jar))
+
+
+def create_marvin_engines_prefix():
+    sudo("mkdir -p /opt/marvin/engines")
+    sudo("chown {user}:{user} /opt/marvin/engines".format(user=env.user))
+    sudo("mkdir -p /var/log/marvin/engines")
+    sudo("chown {user}:{user} /var/log/marvin/engines".format(user=env.user))
+    sudo("mkdir -p /var/run/marvin/engines")
+    sudo("chown {user}:{user} /var/run/marvin/engines".format(user=env.user))
+
+
+def configure_marvin_environment():
+    run("echo 'export MARVIN_HOME=${HOME}/marvin' >> ${HOME}/.profile")
+    run("echo 'export MARVIN_DATA_PATH=${MARVIN_HOME}/data' >> ${HOME}/.profile")
+    run("mkdir -p ${MARVIN_HOME}")
+    run("mkdir -p ${MARVIN_DATA_PATH}")
+
+
+def provision():
+    execute(install_required_packages)
+    execute(install_virtualenvwrapper)
+    execute(install_oracle_jdk)
+    execute(install_apache_spark)
+    execute(install_marvin_engine_executor)
+    execute(create_marvin_engines_prefix)
+    execute(configure_marvin_environment)
+
+
+def package(version):
+    package = env.package
+    local("mkdir -p .packages")
+    local("tar czvf .packages/{package}-{version}.tar.gz --exclude='.packages' .".format(
+          package=package, version=version))
+
+
+def deploy(version, skip_clean=False):
+    execute(engine_stop)
+    package = env.package
+    put(local_path=".packages/{package}-{version}.tar.gz".format(
+        package=package, version=version), remote_path="/tmp/")
+    run("mkdir -p /opt/marvin/engines/{package}/{version}".format(
+        package=package, version=version))
+    with cd("/opt/marvin/engines/{package}/{version}".format(
+            package=package, version=version)):
+        run("tar xzvf /tmp/{package}-{version}.tar.gz".format(
+            package=package, version=version))
+    with cd("/opt/marvin/engines/{package}".format(package=package)):
+        symlink_exists = run("stat current", quiet=True).succeeded
+        if (symlink_exists):
+            run("rm current")
+        run("ln -s {version} current".format(version=version))
+    with cd("/opt/marvin/engines/{package}/current".format(package=package)):
+        run("mkvirtualenv {package}_env".format(package=package))
+        run("setvirtualenvproject")
+        if skip_clean:
+            run("workon {package}_env && make marvin".format(
+                package=package))
+        else:
+            run("workon {package}_env && make clean && make marvin".format(
+                package=package))
+    execute(engine_start)
+
+
+def engine_start(http_host, http_port):
+    package = env.package
+
+    command = (
+        "workon {package}_env &&"
+        " (marvin engine-httpserver"
+        " -h {http_host}"
+        " -p {http_port}"
+        " -e {executor}"
+        " 1> /var/log/marvin/engines/{package}.out"
+        " 2> /var/log/marvin/engines/{package}.err"
+        " & echo $! > /var/run/marvin/engines/{package}.pid)"
+    ).format(
+        package=package,
+        http_host=http_host,
+        http_port=http_port,
+        executor=env.marvin_engine_executor_path
+    )
+
+    with cd("/opt/marvin/engines/{package}/current".format(package=package)):
+        run(command, pty=False)
+
+
+def engine_stop():
+    package = env.package
+
+    pid_file_exists = run("cat /var/run/marvin/engines/{package}.pid".format(
+        package=package), quiet=True)
+    if pid_file_exists.succeeded:
+        with cd("/opt/marvin/engines/{package}/current".format(package=package)):
+            children_pids = run("ps --ppid $(cat /var/run/marvin/engines/{package}.pid) -o pid --no-headers |xargs echo".format(
+                package=package))
+            run("kill $(cat /var/run/marvin/engines/{package}.pid) {children_pids}".format(
+                package=package, children_pids=children_pids))
+            run("rm /var/run/marvin/engines/{package}.pid".format(package=package))
+
+
+def engine_status():
+    package = env.package
+    pid_file_exists = run("cat /var/run/marvin/engines/{package}.pid".format(
+        package=package), quiet=True)
+    if pid_file_exists.succeeded:
+        is_running = run("ps $(cat /var/run/marvin/engines/{package}.pid)".format(package=package), quiet=True)
+        if is_running.succeeded:
+            print("Your engine is running :)"
+        else:
+            print("Your engine is not running :)"
+    else:
+        print("Your engine is not running :)"
diff --git a/kaggle-titanic-engine/feedback.messages b/kaggle-titanic-engine/feedback.messages
new file mode 100644
index 0000000..5ff7ec4
--- /dev/null
+++ b/kaggle-titanic-engine/feedback.messages
@@ -0,0 +1,3 @@
+[{
+	"msg1": "Hello from marvin engine!"
+}]
\ No newline at end of file
diff --git a/kaggle-titanic-engine/marvin.ini b/kaggle-titanic-engine/marvin.ini
new file mode 100644
index 0000000..468d2ad
--- /dev/null
+++ b/kaggle-titanic-engine/marvin.ini
@@ -0,0 +1,11 @@
+[marvin]
+package = marvin_titanic_engine
+type = python-engine
+executor_url = https://s3.amazonaws.com/marvin-engine-executor/marvin-engine-executor-assembly-0.0.3.jar
+
+[ssh_deployment]
+# You can enable multi-host deployment like this
+# host = host1.com,host2.com,hostN.com
+host = host1.com
+port = 22
+user = marvin
\ No newline at end of file
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/VERSION b/kaggle-titanic-engine/marvin_titanic_engine/VERSION
new file mode 100644
index 0000000..8a9ecc2
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/VERSION
@@ -0,0 +1 @@
+0.0.1
\ No newline at end of file
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/__init__.py b/kaggle-titanic-engine/marvin_titanic_engine/__init__.py
new file mode 100644
index 0000000..e715c57
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/__init__.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+import os.path
+
+from .data_handler import *
+from .prediction import *
+from .training import *
+
+
+# Get package version number from "VERSION" file
+with open(os.path.join(os.path.dirname(__file__), 'VERSION'), 'rb') as f:
+    __version__ = f.read().decode('ascii').strip()
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/_compatibility.py b/kaggle-titanic-engine/marvin_titanic_engine/_compatibility.py
new file mode 100644
index 0000000..b2e635d
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/_compatibility.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+"""Compatibility module.
+
+Import this module to help to write code compatible with Python 2 and 3.
+"""
+
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
+import six
+
+__all__ = ['six']
+
+# Add here any code that have to differentiate between python 2 and 3.
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/_logging.py b/kaggle-titanic-engine/marvin_titanic_engine/_logging.py
new file mode 100644
index 0000000..b097312
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/_logging.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+"""Custom logging module.
+
+This module is responsible to manage log messages and log file.
+"""
+
+import sys
+import os
+import os.path
+import logging
+
+DEFAULT_LOG_LEVEL = logging.WARNING
+DEFAULT_LOG_DIR = '/tmp'
+
+
+class Logger(logging.getLoggerClass()):
+    """Custom logger class.
+
+    Use this class to customize the logger behavior or to intercept the
+    messages.
+    """
+    def error(self, msg, *args, **kwargs):
+        # Add here code to intercept the project error messages
+        super(Logger, self).error(msg, *args, **kwargs)
+
+    def critical(self, msg, *args, **kwargs):
+        # Add here code to intercept the project critical messages
+        super(Logger, self).critical(msg, *args, **kwargs)
+
+
+logging.setLoggerClass(Logger)
+
+
+def get_logger(name, namespace='marvin_titanic_engine',
+               log_level=DEFAULT_LOG_LEVEL, log_dir=DEFAULT_LOG_DIR):
+    """Build a logger that outputs to a file and to the console,"""
+
+    log_level = (os.getenv('{}_LOG_LEVEL'.format(namespace.upper())) or
+                 os.getenv('LOG_LEVEL', log_level))
+    log_dir = (os.getenv('{}_LOG_DIR'.format(namespace.upper())) or
+               os.getenv('LOG_DIR', log_dir))
+
+    logger = logging.getLogger('{}.{}'.format(namespace, name))
+    logger.setLevel(log_level)
+
+    formatter = logging.Formatter(
+        '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
+
+    # Create a console stream handler
+    console_handler = logging.StreamHandler()
+    console_handler.setLevel(log_level)
+    console_handler.setFormatter(formatter)
+    logger.addHandler(console_handler)
+
+    try:
+        if log_dir:
+            log_path = os.path.abspath(log_dir)
+            log_filename = '{name}.{pid}.log'.format(
+                name=namespace, pid=os.getpid())
+
+            file_path = str(os.path.join(log_path, log_filename))
+
+            if not os.path.exists(log_path):
+                os.makedirs(log_path, mode=774)
+
+            # Create a file handler
+            file_handler = logging.FileHandler(file_path)
+            file_handler.setLevel(log_level)
+            file_handler.setFormatter(formatter)
+            logger.addHandler(file_handler)
+    except OSError as e:
+        logger.error('Could not create log file {file}: {error}'.format(
+            file=file_path, error=e.strerror))
+
+    return logger
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/data_files/test.csv b/kaggle-titanic-engine/marvin_titanic_engine/data_files/test.csv
new file mode 100644
index 0000000..2ed7ef4
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/data_files/test.csv
@@ -0,0 +1,419 @@
+PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
+892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q
+893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S
+894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q
+895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S
+896,3,"Hirvonen, Mrs. Alexander (Helga E Lindqvist)",female,22,1,1,3101298,12.2875,,S
+897,3,"Svensson, Mr. Johan Cervin",male,14,0,0,7538,9.225,,S
+898,3,"Connolly, Miss. Kate",female,30,0,0,330972,7.6292,,Q
+899,2,"Caldwell, Mr. Albert Francis",male,26,1,1,248738,29,,S
+900,3,"Abrahim, Mrs. Joseph (Sophie Halaut Easu)",female,18,0,0,2657,7.2292,,C
+901,3,"Davies, Mr. John Samuel",male,21,2,0,A/4 48871,24.15,,S
+902,3,"Ilieff, Mr. Ylio",male,,0,0,349220,7.8958,,S
+903,1,"Jones, Mr. Charles Cresson",male,46,0,0,694,26,,S
+904,1,"Snyder, Mrs. John Pillsbury (Nelle Stevenson)",female,23,1,0,21228,82.2667,B45,S
+905,2,"Howard, Mr. Benjamin",male,63,1,0,24065,26,,S
+906,1,"Chaffee, Mrs. Herbert Fuller (Carrie Constance Toogood)",female,47,1,0,W.E.P. 5734,61.175,E31,S
+907,2,"del Carlo, Mrs. Sebastiano (Argenia Genovesi)",female,24,1,0,SC/PARIS 2167,27.7208,,C
+908,2,"Keane, Mr. Daniel",male,35,0,0,233734,12.35,,Q
+909,3,"Assaf, Mr. Gerios",male,21,0,0,2692,7.225,,C
+910,3,"Ilmakangas, Miss. Ida Livija",female,27,1,0,STON/O2. 3101270,7.925,,S
+911,3,"Assaf Khalil, Mrs. Mariana (Miriam"")""",female,45,0,0,2696,7.225,,C
+912,1,"Rothschild, Mr. Martin",male,55,1,0,PC 17603,59.4,,C
+913,3,"Olsen, Master. Artur Karl",male,9,0,1,C 17368,3.1708,,S
+914,1,"Flegenheim, Mrs. Alfred (Antoinette)",female,,0,0,PC 17598,31.6833,,S
+915,1,"Williams, Mr. Richard Norris II",male,21,0,1,PC 17597,61.3792,,C
+916,1,"Ryerson, Mrs. Arthur Larned (Emily Maria Borie)",female,48,1,3,PC 17608,262.375,B57 B59 B63 B66,C
+917,3,"Robins, Mr. Alexander A",male,50,1,0,A/5. 3337,14.5,,S
+918,1,"Ostby, Miss. Helene Ragnhild",female,22,0,1,113509,61.9792,B36,C
+919,3,"Daher, Mr. Shedid",male,22.5,0,0,2698,7.225,,C
+920,1,"Brady, Mr. John Bertram",male,41,0,0,113054,30.5,A21,S
+921,3,"Samaan, Mr. Elias",male,,2,0,2662,21.6792,,C
+922,2,"Louch, Mr. Charles Alexander",male,50,1,0,SC/AH 3085,26,,S
+923,2,"Jefferys, Mr. Clifford Thomas",male,24,2,0,C.A. 31029,31.5,,S
+924,3,"Dean, Mrs. Bertram (Eva Georgetta Light)",female,33,1,2,C.A. 2315,20.575,,S
+925,3,"Johnston, Mrs. Andrew G (Elizabeth Lily"" Watson)""",female,,1,2,W./C. 6607,23.45,,S
+926,1,"Mock, Mr. Philipp Edmund",male,30,1,0,13236,57.75,C78,C
+927,3,"Katavelas, Mr. Vassilios (Catavelas Vassilios"")""",male,18.5,0,0,2682,7.2292,,C
+928,3,"Roth, Miss. Sarah A",female,,0,0,342712,8.05,,S
+929,3,"Cacic, Miss. Manda",female,21,0,0,315087,8.6625,,S
+930,3,"Sap, Mr. Julius",male,25,0,0,345768,9.5,,S
+931,3,"Hee, Mr. Ling",male,,0,0,1601,56.4958,,S
+932,3,"Karun, Mr. Franz",male,39,0,1,349256,13.4167,,C
+933,1,"Franklin, Mr. Thomas Parham",male,,0,0,113778,26.55,D34,S
+934,3,"Goldsmith, Mr. Nathan",male,41,0,0,SOTON/O.Q. 3101263,7.85,,S
+935,2,"Corbett, Mrs. Walter H (Irene Colvin)",female,30,0,0,237249,13,,S
+936,1,"Kimball, Mrs. Edwin Nelson Jr (Gertrude Parsons)",female,45,1,0,11753,52.5542,D19,S
+937,3,"Peltomaki, Mr. Nikolai Johannes",male,25,0,0,STON/O 2. 3101291,7.925,,S
+938,1,"Chevre, Mr. Paul Romaine",male,45,0,0,PC 17594,29.7,A9,C
+939,3,"Shaughnessy, Mr. Patrick",male,,0,0,370374,7.75,,Q
+940,1,"Bucknell, Mrs. William Robert (Emma Eliza Ward)",female,60,0,0,11813,76.2917,D15,C
+941,3,"Coutts, Mrs. William (Winnie Minnie"" Treanor)""",female,36,0,2,C.A. 37671,15.9,,S
+942,1,"Smith, Mr. Lucien Philip",male,24,1,0,13695,60,C31,S
+943,2,"Pulbaum, Mr. Franz",male,27,0,0,SC/PARIS 2168,15.0333,,C
+944,2,"Hocking, Miss. Ellen Nellie""""",female,20,2,1,29105,23,,S
+945,1,"Fortune, Miss. Ethel Flora",female,28,3,2,19950,263,C23 C25 C27,S
+946,2,"Mangiavacchi, Mr. Serafino Emilio",male,,0,0,SC/A.3 2861,15.5792,,C
+947,3,"Rice, Master. Albert",male,10,4,1,382652,29.125,,Q
+948,3,"Cor, Mr. Bartol",male,35,0,0,349230,7.8958,,S
+949,3,"Abelseth, Mr. Olaus Jorgensen",male,25,0,0,348122,7.65,F G63,S
+950,3,"Davison, Mr. Thomas Henry",male,,1,0,386525,16.1,,S
+951,1,"Chaudanson, Miss. Victorine",female,36,0,0,PC 17608,262.375,B61,C
+952,3,"Dika, Mr. Mirko",male,17,0,0,349232,7.8958,,S
+953,2,"McCrae, Mr. Arthur Gordon",male,32,0,0,237216,13.5,,S
+954,3,"Bjorklund, Mr. Ernst Herbert",male,18,0,0,347090,7.75,,S
+955,3,"Bradley, Miss. Bridget Delia",female,22,0,0,334914,7.725,,Q
+956,1,"Ryerson, Master. John Borie",male,13,2,2,PC 17608,262.375,B57 B59 B63 B66,C
+957,2,"Corey, Mrs. Percy C (Mary Phyllis Elizabeth Miller)",female,,0,0,F.C.C. 13534,21,,S
+958,3,"Burns, Miss. Mary Delia",female,18,0,0,330963,7.8792,,Q
+959,1,"Moore, Mr. Clarence Bloomfield",male,47,0,0,113796,42.4,,S
+960,1,"Tucker, Mr. Gilbert Milligan Jr",male,31,0,0,2543,28.5375,C53,C
+961,1,"Fortune, Mrs. Mark (Mary McDougald)",female,60,1,4,19950,263,C23 C25 C27,S
+962,3,"Mulvihill, Miss. Bertha E",female,24,0,0,382653,7.75,,Q
+963,3,"Minkoff, Mr. Lazar",male,21,0,0,349211,7.8958,,S
+964,3,"Nieminen, Miss. Manta Josefina",female,29,0,0,3101297,7.925,,S
+965,1,"Ovies y Rodriguez, Mr. Servando",male,28.5,0,0,PC 17562,27.7208,D43,C
+966,1,"Geiger, Miss. Amalie",female,35,0,0,113503,211.5,C130,C
+967,1,"Keeping, Mr. Edwin",male,32.5,0,0,113503,211.5,C132,C
+968,3,"Miles, Mr. Frank",male,,0,0,359306,8.05,,S
+969,1,"Cornell, Mrs. Robert Clifford (Malvina Helen Lamson)",female,55,2,0,11770,25.7,C101,S
+970,2,"Aldworth, Mr. Charles Augustus",male,30,0,0,248744,13,,S
+971,3,"Doyle, Miss. Elizabeth",female,24,0,0,368702,7.75,,Q
+972,3,"Boulos, Master. Akar",male,6,1,1,2678,15.2458,,C
+973,1,"Straus, Mr. Isidor",male,67,1,0,PC 17483,221.7792,C55 C57,S
+974,1,"Case, Mr. Howard Brown",male,49,0,0,19924,26,,S
+975,3,"Demetri, Mr. Marinko",male,,0,0,349238,7.8958,,S
+976,2,"Lamb, Mr. John Joseph",male,,0,0,240261,10.7083,,Q
+977,3,"Khalil, Mr. Betros",male,,1,0,2660,14.4542,,C
+978,3,"Barry, Miss. Julia",female,27,0,0,330844,7.8792,,Q
+979,3,"Badman, Miss. Emily Louisa",female,18,0,0,A/4 31416,8.05,,S
+980,3,"O'Donoghue, Ms. Bridget",female,,0,0,364856,7.75,,Q
+981,2,"Wells, Master. Ralph Lester",male,2,1,1,29103,23,,S
+982,3,"Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judith Andersson)",female,22,1,0,347072,13.9,,S
+983,3,"Pedersen, Mr. Olaf",male,,0,0,345498,7.775,,S
+984,1,"Davidson, Mrs. Thornton (Orian Hays)",female,27,1,2,F.C. 12750,52,B71,S
+985,3,"Guest, Mr. Robert",male,,0,0,376563,8.05,,S
+986,1,"Birnbaum, Mr. Jakob",male,25,0,0,13905,26,,C
+987,3,"Tenglin, Mr. Gunnar Isidor",male,25,0,0,350033,7.7958,,S
+988,1,"Cavendish, Mrs. Tyrell William (Julia Florence Siegel)",female,76,1,0,19877,78.85,C46,S
+989,3,"Makinen, Mr. Kalle Edvard",male,29,0,0,STON/O 2. 3101268,7.925,,S
+990,3,"Braf, Miss. Elin Ester Maria",female,20,0,0,347471,7.8542,,S
+991,3,"Nancarrow, Mr. William Henry",male,33,0,0,A./5. 3338,8.05,,S
+992,1,"Stengel, Mrs. Charles Emil Henry (Annie May Morris)",female,43,1,0,11778,55.4417,C116,C
+993,2,"Weisz, Mr. Leopold",male,27,1,0,228414,26,,S
+994,3,"Foley, Mr. William",male,,0,0,365235,7.75,,Q
+995,3,"Johansson Palmquist, Mr. Oskar Leander",male,26,0,0,347070,7.775,,S
+996,3,"Thomas, Mrs. Alexander (Thamine Thelma"")""",female,16,1,1,2625,8.5167,,C
+997,3,"Holthen, Mr. Johan Martin",male,28,0,0,C 4001,22.525,,S
+998,3,"Buckley, Mr. Daniel",male,21,0,0,330920,7.8208,,Q
+999,3,"Ryan, Mr. Edward",male,,0,0,383162,7.75,,Q
+1000,3,"Willer, Mr. Aaron (Abi Weller"")""",male,,0,0,3410,8.7125,,S
+1001,2,"Swane, Mr. George",male,18.5,0,0,248734,13,F,S
+1002,2,"Stanton, Mr. Samuel Ward",male,41,0,0,237734,15.0458,,C
+1003,3,"Shine, Miss. Ellen Natalia",female,,0,0,330968,7.7792,,Q
+1004,1,"Evans, Miss. Edith Corse",female,36,0,0,PC 17531,31.6792,A29,C
+1005,3,"Buckley, Miss. Katherine",female,18.5,0,0,329944,7.2833,,Q
+1006,1,"Straus, Mrs. Isidor (Rosalie Ida Blun)",female,63,1,0,PC 17483,221.7792,C55 C57,S
+1007,3,"Chronopoulos, Mr. Demetrios",male,18,1,0,2680,14.4542,,C
+1008,3,"Thomas, Mr. John",male,,0,0,2681,6.4375,,C
+1009,3,"Sandstrom, Miss. Beatrice Irene",female,1,1,1,PP 9549,16.7,G6,S
+1010,1,"Beattie, Mr. Thomson",male,36,0,0,13050,75.2417,C6,C
+1011,2,"Chapman, Mrs. John Henry (Sara Elizabeth Lawry)",female,29,1,0,SC/AH 29037,26,,S
+1012,2,"Watt, Miss. Bertha J",female,12,0,0,C.A. 33595,15.75,,S
+1013,3,"Kiernan, Mr. John",male,,1,0,367227,7.75,,Q
+1014,1,"Schabert, Mrs. Paul (Emma Mock)",female,35,1,0,13236,57.75,C28,C
+1015,3,"Carver, Mr. Alfred John",male,28,0,0,392095,7.25,,S
+1016,3,"Kennedy, Mr. John",male,,0,0,368783,7.75,,Q
+1017,3,"Cribb, Miss. Laura Alice",female,17,0,1,371362,16.1,,S
+1018,3,"Brobeck, Mr. Karl Rudolf",male,22,0,0,350045,7.7958,,S
+1019,3,"McCoy, Miss. Alicia",female,,2,0,367226,23.25,,Q
+1020,2,"Bowenur, Mr. Solomon",male,42,0,0,211535,13,,S
+1021,3,"Petersen, Mr. Marius",male,24,0,0,342441,8.05,,S
+1022,3,"Spinner, Mr. Henry John",male,32,0,0,STON/OQ. 369943,8.05,,S
+1023,1,"Gracie, Col. Archibald IV",male,53,0,0,113780,28.5,C51,C
+1024,3,"Lefebre, Mrs. Frank (Frances)",female,,0,4,4133,25.4667,,S
+1025,3,"Thomas, Mr. Charles P",male,,1,0,2621,6.4375,,C
+1026,3,"Dintcheff, Mr. Valtcho",male,43,0,0,349226,7.8958,,S
+1027,3,"Carlsson, Mr. Carl Robert",male,24,0,0,350409,7.8542,,S
+1028,3,"Zakarian, Mr. Mapriededer",male,26.5,0,0,2656,7.225,,C
+1029,2,"Schmidt, Mr. August",male,26,0,0,248659,13,,S
+1030,3,"Drapkin, Miss. Jennie",female,23,0,0,SOTON/OQ 392083,8.05,,S
+1031,3,"Goodwin, Mr. Charles Frederick",male,40,1,6,CA 2144,46.9,,S
+1032,3,"Goodwin, Miss. Jessie Allis",female,10,5,2,CA 2144,46.9,,S
+1033,1,"Daniels, Miss. Sarah",female,33,0,0,113781,151.55,,S
+1034,1,"Ryerson, Mr. Arthur Larned",male,61,1,3,PC 17608,262.375,B57 B59 B63 B66,C
+1035,2,"Beauchamp, Mr. Henry James",male,28,0,0,244358,26,,S
+1036,1,"Lindeberg-Lind, Mr. Erik Gustaf (Mr Edward Lingrey"")""",male,42,0,0,17475,26.55,,S
+1037,3,"Vander Planke, Mr. Julius",male,31,3,0,345763,18,,S
+1038,1,"Hilliard, Mr. Herbert Henry",male,,0,0,17463,51.8625,E46,S
+1039,3,"Davies, Mr. Evan",male,22,0,0,SC/A4 23568,8.05,,S
+1040,1,"Crafton, Mr. John Bertram",male,,0,0,113791,26.55,,S
+1041,2,"Lahtinen, Rev. William",male,30,1,1,250651,26,,S
+1042,1,"Earnshaw, Mrs. Boulton (Olive Potter)",female,23,0,1,11767,83.1583,C54,C
+1043,3,"Matinoff, Mr. Nicola",male,,0,0,349255,7.8958,,C
+1044,3,"Storey, Mr. Thomas",male,60.5,0,0,3701,,,S
+1045,3,"Klasen, Mrs. (Hulda Kristina Eugenia Lofqvist)",female,36,0,2,350405,12.1833,,S
+1046,3,"Asplund, Master. Filip Oscar",male,13,4,2,347077,31.3875,,S
+1047,3,"Duquemin, Mr. Joseph",male,24,0,0,S.O./P.P. 752,7.55,,S
+1048,1,"Bird, Miss. Ellen",female,29,0,0,PC 17483,221.7792,C97,S
+1049,3,"Lundin, Miss. Olga Elida",female,23,0,0,347469,7.8542,,S
+1050,1,"Borebank, Mr. John James",male,42,0,0,110489,26.55,D22,S
+1051,3,"Peacock, Mrs. Benjamin (Edith Nile)",female,26,0,2,SOTON/O.Q. 3101315,13.775,,S
+1052,3,"Smyth, Miss. Julia",female,,0,0,335432,7.7333,,Q
+1053,3,"Touma, Master. Georges Youssef",male,7,1,1,2650,15.2458,,C
+1054,2,"Wright, Miss. Marion",female,26,0,0,220844,13.5,,S
+1055,3,"Pearce, Mr. Ernest",male,,0,0,343271,7,,S
+1056,2,"Peruschitz, Rev. Joseph Maria",male,41,0,0,237393,13,,S
+1057,3,"Kink-Heilmann, Mrs. Anton (Luise Heilmann)",female,26,1,1,315153,22.025,,S
+1058,1,"Brandeis, Mr. Emil",male,48,0,0,PC 17591,50.4958,B10,C
+1059,3,"Ford, Mr. Edward Watson",male,18,2,2,W./C. 6608,34.375,,S
+1060,1,"Cassebeer, Mrs. Henry Arthur Jr (Eleanor Genevieve Fosdick)",female,,0,0,17770,27.7208,,C
+1061,3,"Hellstrom, Miss. Hilda Maria",female,22,0,0,7548,8.9625,,S
+1062,3,"Lithman, Mr. Simon",male,,0,0,S.O./P.P. 251,7.55,,S
+1063,3,"Zakarian, Mr. Ortin",male,27,0,0,2670,7.225,,C
+1064,3,"Dyker, Mr. Adolf Fredrik",male,23,1,0,347072,13.9,,S
+1065,3,"Torfa, Mr. Assad",male,,0,0,2673,7.2292,,C
+1066,3,"Asplund, Mr. Carl Oscar Vilhelm Gustafsson",male,40,1,5,347077,31.3875,,S
+1067,2,"Brown, Miss. Edith Eileen",female,15,0,2,29750,39,,S
+1068,2,"Sincock, Miss. Maude",female,20,0,0,C.A. 33112,36.75,,S
+1069,1,"Stengel, Mr. Charles Emil Henry",male,54,1,0,11778,55.4417,C116,C
+1070,2,"Becker, Mrs. Allen Oliver (Nellie E Baumgardner)",female,36,0,3,230136,39,F4,S
+1071,1,"Compton, Mrs. Alexander Taylor (Mary Eliza Ingersoll)",female,64,0,2,PC 17756,83.1583,E45,C
+1072,2,"McCrie, Mr. James Matthew",male,30,0,0,233478,13,,S
+1073,1,"Compton, Mr. Alexander Taylor Jr",male,37,1,1,PC 17756,83.1583,E52,C
+1074,1,"Marvin, Mrs. Daniel Warner (Mary Graham Carmichael Farquarson)",female,18,1,0,113773,53.1,D30,S
+1075,3,"Lane, Mr. Patrick",male,,0,0,7935,7.75,,Q
+1076,1,"Douglas, Mrs. Frederick Charles (Mary Helene Baxter)",female,27,1,1,PC 17558,247.5208,B58 B60,C
+1077,2,"Maybery, Mr. Frank Hubert",male,40,0,0,239059,16,,S
+1078,2,"Phillips, Miss. Alice Frances Louisa",female,21,0,1,S.O./P.P. 2,21,,S
+1079,3,"Davies, Mr. Joseph",male,17,2,0,A/4 48873,8.05,,S
+1080,3,"Sage, Miss. Ada",female,,8,2,CA. 2343,69.55,,S
+1081,2,"Veal, Mr. James",male,40,0,0,28221,13,,S
+1082,2,"Angle, Mr. William A",male,34,1,0,226875,26,,S
+1083,1,"Salomon, Mr. Abraham L",male,,0,0,111163,26,,S
+1084,3,"van Billiard, Master. Walter John",male,11.5,1,1,A/5. 851,14.5,,S
+1085,2,"Lingane, Mr. John",male,61,0,0,235509,12.35,,Q
+1086,2,"Drew, Master. Marshall Brines",male,8,0,2,28220,32.5,,S
+1087,3,"Karlsson, Mr. Julius Konrad Eugen",male,33,0,0,347465,7.8542,,S
+1088,1,"Spedden, Master. Robert Douglas",male,6,0,2,16966,134.5,E34,C
+1089,3,"Nilsson, Miss. Berta Olivia",female,18,0,0,347066,7.775,,S
+1090,2,"Baimbrigge, Mr. Charles Robert",male,23,0,0,C.A. 31030,10.5,,S
+1091,3,"Rasmussen, Mrs. (Lena Jacobsen Solvang)",female,,0,0,65305,8.1125,,S
+1092,3,"Murphy, Miss. Nora",female,,0,0,36568,15.5,,Q
+1093,3,"Danbom, Master. Gilbert Sigvard Emanuel",male,0.33,0,2,347080,14.4,,S
+1094,1,"Astor, Col. John Jacob",male,47,1,0,PC 17757,227.525,C62 C64,C
+1095,2,"Quick, Miss. Winifred Vera",female,8,1,1,26360,26,,S
+1096,2,"Andrew, Mr. Frank Thomas",male,25,0,0,C.A. 34050,10.5,,S
+1097,1,"Omont, Mr. Alfred Fernand",male,,0,0,F.C. 12998,25.7417,,C
+1098,3,"McGowan, Miss. Katherine",female,35,0,0,9232,7.75,,Q
+1099,2,"Collett, Mr. Sidney C Stuart",male,24,0,0,28034,10.5,,S
+1100,1,"Rosenbaum, Miss. Edith Louise",female,33,0,0,PC 17613,27.7208,A11,C
+1101,3,"Delalic, Mr. Redjo",male,25,0,0,349250,7.8958,,S
+1102,3,"Andersen, Mr. Albert Karvin",male,32,0,0,C 4001,22.525,,S
+1103,3,"Finoli, Mr. Luigi",male,,0,0,SOTON/O.Q. 3101308,7.05,,S
+1104,2,"Deacon, Mr. Percy William",male,17,0,0,S.O.C. 14879,73.5,,S
+1105,2,"Howard, Mrs. Benjamin (Ellen Truelove Arman)",female,60,1,0,24065,26,,S
+1106,3,"Andersson, Miss. Ida Augusta Margareta",female,38,4,2,347091,7.775,,S
+1107,1,"Head, Mr. Christopher",male,42,0,0,113038,42.5,B11,S
+1108,3,"Mahon, Miss. Bridget Delia",female,,0,0,330924,7.8792,,Q
+1109,1,"Wick, Mr. George Dennick",male,57,1,1,36928,164.8667,,S
+1110,1,"Widener, Mrs. George Dunton (Eleanor Elkins)",female,50,1,1,113503,211.5,C80,C
+1111,3,"Thomson, Mr. Alexander Morrison",male,,0,0,32302,8.05,,S
+1112,2,"Duran y More, Miss. Florentina",female,30,1,0,SC/PARIS 2148,13.8583,,C
+1113,3,"Reynolds, Mr. Harold J",male,21,0,0,342684,8.05,,S
+1114,2,"Cook, Mrs. (Selena Rogers)",female,22,0,0,W./C. 14266,10.5,F33,S
+1115,3,"Karlsson, Mr. Einar Gervasius",male,21,0,0,350053,7.7958,,S
+1116,1,"Candee, Mrs. Edward (Helen Churchill Hungerford)",female,53,0,0,PC 17606,27.4458,,C
+1117,3,"Moubarek, Mrs. George (Omine Amenia"" Alexander)""",female,,0,2,2661,15.2458,,C
+1118,3,"Asplund, Mr. Johan Charles",male,23,0,0,350054,7.7958,,S
+1119,3,"McNeill, Miss. Bridget",female,,0,0,370368,7.75,,Q
+1120,3,"Everett, Mr. Thomas James",male,40.5,0,0,C.A. 6212,15.1,,S
+1121,2,"Hocking, Mr. Samuel James Metcalfe",male,36,0,0,242963,13,,S
+1122,2,"Sweet, Mr. George Frederick",male,14,0,0,220845,65,,S
+1123,1,"Willard, Miss. Constance",female,21,0,0,113795,26.55,,S
+1124,3,"Wiklund, Mr. Karl Johan",male,21,1,0,3101266,6.4958,,S
+1125,3,"Linehan, Mr. Michael",male,,0,0,330971,7.8792,,Q
+1126,1,"Cumings, Mr. John Bradley",male,39,1,0,PC 17599,71.2833,C85,C
+1127,3,"Vendel, Mr. Olof Edvin",male,20,0,0,350416,7.8542,,S
+1128,1,"Warren, Mr. Frank Manley",male,64,1,0,110813,75.25,D37,C
+1129,3,"Baccos, Mr. Raffull",male,20,0,0,2679,7.225,,C
+1130,2,"Hiltunen, Miss. Marta",female,18,1,1,250650,13,,S
+1131,1,"Douglas, Mrs. Walter Donald (Mahala Dutton)",female,48,1,0,PC 17761,106.425,C86,C
+1132,1,"Lindstrom, Mrs. Carl Johan (Sigrid Posse)",female,55,0,0,112377,27.7208,,C
+1133,2,"Christy, Mrs. (Alice Frances)",female,45,0,2,237789,30,,S
+1134,1,"Spedden, Mr. Frederic Oakley",male,45,1,1,16966,134.5,E34,C
+1135,3,"Hyman, Mr. Abraham",male,,0,0,3470,7.8875,,S
+1136,3,"Johnston, Master. William Arthur Willie""""",male,,1,2,W./C. 6607,23.45,,S
+1137,1,"Kenyon, Mr. Frederick R",male,41,1,0,17464,51.8625,D21,S
+1138,2,"Karnes, Mrs. J Frank (Claire Bennett)",female,22,0,0,F.C.C. 13534,21,,S
+1139,2,"Drew, Mr. James Vivian",male,42,1,1,28220,32.5,,S
+1140,2,"Hold, Mrs. Stephen (Annie Margaret Hill)",female,29,1,0,26707,26,,S
+1141,3,"Khalil, Mrs. Betros (Zahie Maria"" Elias)""",female,,1,0,2660,14.4542,,C
+1142,2,"West, Miss. Barbara J",female,0.92,1,2,C.A. 34651,27.75,,S
+1143,3,"Abrahamsson, Mr. Abraham August Johannes",male,20,0,0,SOTON/O2 3101284,7.925,,S
+1144,1,"Clark, Mr. Walter Miller",male,27,1,0,13508,136.7792,C89,C
+1145,3,"Salander, Mr. Karl Johan",male,24,0,0,7266,9.325,,S
+1146,3,"Wenzel, Mr. Linhart",male,32.5,0,0,345775,9.5,,S
+1147,3,"MacKay, Mr. George William",male,,0,0,C.A. 42795,7.55,,S
+1148,3,"Mahon, Mr. John",male,,0,0,AQ/4 3130,7.75,,Q
+1149,3,"Niklasson, Mr. Samuel",male,28,0,0,363611,8.05,,S
+1150,2,"Bentham, Miss. Lilian W",female,19,0,0,28404,13,,S
+1151,3,"Midtsjo, Mr. Karl Albert",male,21,0,0,345501,7.775,,S
+1152,3,"de Messemaeker, Mr. Guillaume Joseph",male,36.5,1,0,345572,17.4,,S
+1153,3,"Nilsson, Mr. August Ferdinand",male,21,0,0,350410,7.8542,,S
+1154,2,"Wells, Mrs. Arthur Henry (Addie"" Dart Trevaskis)""",female,29,0,2,29103,23,,S
+1155,3,"Klasen, Miss. Gertrud Emilia",female,1,1,1,350405,12.1833,,S
+1156,2,"Portaluppi, Mr. Emilio Ilario Giuseppe",male,30,0,0,C.A. 34644,12.7375,,C
+1157,3,"Lyntakoff, Mr. Stanko",male,,0,0,349235,7.8958,,S
+1158,1,"Chisholm, Mr. Roderick Robert Crispin",male,,0,0,112051,0,,S
+1159,3,"Warren, Mr. Charles William",male,,0,0,C.A. 49867,7.55,,S
+1160,3,"Howard, Miss. May Elizabeth",female,,0,0,A. 2. 39186,8.05,,S
+1161,3,"Pokrnic, Mr. Mate",male,17,0,0,315095,8.6625,,S
+1162,1,"McCaffry, Mr. Thomas Francis",male,46,0,0,13050,75.2417,C6,C
+1163,3,"Fox, Mr. Patrick",male,,0,0,368573,7.75,,Q
+1164,1,"Clark, Mrs. Walter Miller (Virginia McDowell)",female,26,1,0,13508,136.7792,C89,C
+1165,3,"Lennon, Miss. Mary",female,,1,0,370371,15.5,,Q
+1166,3,"Saade, Mr. Jean Nassr",male,,0,0,2676,7.225,,C
+1167,2,"Bryhl, Miss. Dagmar Jenny Ingeborg ",female,20,1,0,236853,26,,S
+1168,2,"Parker, Mr. Clifford Richard",male,28,0,0,SC 14888,10.5,,S
+1169,2,"Faunthorpe, Mr. Harry",male,40,1,0,2926,26,,S
+1170,2,"Ware, Mr. John James",male,30,1,0,CA 31352,21,,S
+1171,2,"Oxenham, Mr. Percy Thomas",male,22,0,0,W./C. 14260,10.5,,S
+1172,3,"Oreskovic, Miss. Jelka",female,23,0,0,315085,8.6625,,S
+1173,3,"Peacock, Master. Alfred Edward",male,0.75,1,1,SOTON/O.Q. 3101315,13.775,,S
+1174,3,"Fleming, Miss. Honora",female,,0,0,364859,7.75,,Q
+1175,3,"Touma, Miss. Maria Youssef",female,9,1,1,2650,15.2458,,C
+1176,3,"Rosblom, Miss. Salli Helena",female,2,1,1,370129,20.2125,,S
+1177,3,"Dennis, Mr. William",male,36,0,0,A/5 21175,7.25,,S
+1178,3,"Franklin, Mr. Charles (Charles Fardon)",male,,0,0,SOTON/O.Q. 3101314,7.25,,S
+1179,1,"Snyder, Mr. John Pillsbury",male,24,1,0,21228,82.2667,B45,S
+1180,3,"Mardirosian, Mr. Sarkis",male,,0,0,2655,7.2292,F E46,C
+1181,3,"Ford, Mr. Arthur",male,,0,0,A/5 1478,8.05,,S
+1182,1,"Rheims, Mr. George Alexander Lucien",male,,0,0,PC 17607,39.6,,S
+1183,3,"Daly, Miss. Margaret Marcella Maggie""""",female,30,0,0,382650,6.95,,Q
+1184,3,"Nasr, Mr. Mustafa",male,,0,0,2652,7.2292,,C
+1185,1,"Dodge, Dr. Washington",male,53,1,1,33638,81.8583,A34,S
+1186,3,"Wittevrongel, Mr. Camille",male,36,0,0,345771,9.5,,S
+1187,3,"Angheloff, Mr. Minko",male,26,0,0,349202,7.8958,,S
+1188,2,"Laroche, Miss. Louise",female,1,1,2,SC/Paris 2123,41.5792,,C
+1189,3,"Samaan, Mr. Hanna",male,,2,0,2662,21.6792,,C
+1190,1,"Loring, Mr. Joseph Holland",male,30,0,0,113801,45.5,,S
+1191,3,"Johansson, Mr. Nils",male,29,0,0,347467,7.8542,,S
+1192,3,"Olsson, Mr. Oscar Wilhelm",male,32,0,0,347079,7.775,,S
+1193,2,"Malachard, Mr. Noel",male,,0,0,237735,15.0458,D,C
+1194,2,"Phillips, Mr. Escott Robert",male,43,0,1,S.O./P.P. 2,21,,S
+1195,3,"Pokrnic, Mr. Tome",male,24,0,0,315092,8.6625,,S
+1196,3,"McCarthy, Miss. Catherine Katie""""",female,,0,0,383123,7.75,,Q
+1197,1,"Crosby, Mrs. Edward Gifford (Catherine Elizabeth Halstead)",female,64,1,1,112901,26.55,B26,S
+1198,1,"Allison, Mr. Hudson Joshua Creighton",male,30,1,2,113781,151.55,C22 C26,S
+1199,3,"Aks, Master. Philip Frank",male,0.83,0,1,392091,9.35,,S
+1200,1,"Hays, Mr. Charles Melville",male,55,1,1,12749,93.5,B69,S
+1201,3,"Hansen, Mrs. Claus Peter (Jennie L Howard)",female,45,1,0,350026,14.1083,,S
+1202,3,"Cacic, Mr. Jego Grga",male,18,0,0,315091,8.6625,,S
+1203,3,"Vartanian, Mr. David",male,22,0,0,2658,7.225,,C
+1204,3,"Sadowitz, Mr. Harry",male,,0,0,LP 1588,7.575,,S
+1205,3,"Carr, Miss. Jeannie",female,37,0,0,368364,7.75,,Q
+1206,1,"White, Mrs. John Stuart (Ella Holmes)",female,55,0,0,PC 17760,135.6333,C32,C
+1207,3,"Hagardon, Miss. Kate",female,17,0,0,AQ/3. 30631,7.7333,,Q
+1208,1,"Spencer, Mr. William Augustus",male,57,1,0,PC 17569,146.5208,B78,C
+1209,2,"Rogers, Mr. Reginald Harry",male,19,0,0,28004,10.5,,S
+1210,3,"Jonsson, Mr. Nils Hilding",male,27,0,0,350408,7.8542,,S
+1211,2,"Jefferys, Mr. Ernest Wilfred",male,22,2,0,C.A. 31029,31.5,,S
+1212,3,"Andersson, Mr. Johan Samuel",male,26,0,0,347075,7.775,,S
+1213,3,"Krekorian, Mr. Neshan",male,25,0,0,2654,7.2292,F E57,C
+1214,2,"Nesson, Mr. Israel",male,26,0,0,244368,13,F2,S
+1215,1,"Rowe, Mr. Alfred G",male,33,0,0,113790,26.55,,S
+1216,1,"Kreuchen, Miss. Emilie",female,39,0,0,24160,211.3375,,S
+1217,3,"Assam, Mr. Ali",male,23,0,0,SOTON/O.Q. 3101309,7.05,,S
+1218,2,"Becker, Miss. Ruth Elizabeth",female,12,2,1,230136,39,F4,S
+1219,1,"Rosenshine, Mr. George (Mr George Thorne"")""",male,46,0,0,PC 17585,79.2,,C
+1220,2,"Clarke, Mr. Charles Valentine",male,29,1,0,2003,26,,S
+1221,2,"Enander, Mr. Ingvar",male,21,0,0,236854,13,,S
+1222,2,"Davies, Mrs. John Morgan (Elizabeth Agnes Mary White) ",female,48,0,2,C.A. 33112,36.75,,S
+1223,1,"Dulles, Mr. William Crothers",male,39,0,0,PC 17580,29.7,A18,C
+1224,3,"Thomas, Mr. Tannous",male,,0,0,2684,7.225,,C
+1225,3,"Nakid, Mrs. Said (Waika Mary"" Mowad)""",female,19,1,1,2653,15.7417,,C
+1226,3,"Cor, Mr. Ivan",male,27,0,0,349229,7.8958,,S
+1227,1,"Maguire, Mr. John Edward",male,30,0,0,110469,26,C106,S
+1228,2,"de Brito, Mr. Jose Joaquim",male,32,0,0,244360,13,,S
+1229,3,"Elias, Mr. Joseph",male,39,0,2,2675,7.2292,,C
+1230,2,"Denbury, Mr. Herbert",male,25,0,0,C.A. 31029,31.5,,S
+1231,3,"Betros, Master. Seman",male,,0,0,2622,7.2292,,C
+1232,2,"Fillbrook, Mr. Joseph Charles",male,18,0,0,C.A. 15185,10.5,,S
+1233,3,"Lundstrom, Mr. Thure Edvin",male,32,0,0,350403,7.5792,,S
+1234,3,"Sage, Mr. John George",male,,1,9,CA. 2343,69.55,,S
+1235,1,"Cardeza, Mrs. James Warburton Martinez (Charlotte Wardle Drake)",female,58,0,1,PC 17755,512.3292,B51 B53 B55,C
+1236,3,"van Billiard, Master. James William",male,,1,1,A/5. 851,14.5,,S
+1237,3,"Abelseth, Miss. Karen Marie",female,16,0,0,348125,7.65,,S
+1238,2,"Botsford, Mr. William Hull",male,26,0,0,237670,13,,S
+1239,3,"Whabee, Mrs. George Joseph (Shawneene Abi-Saab)",female,38,0,0,2688,7.2292,,C
+1240,2,"Giles, Mr. Ralph",male,24,0,0,248726,13.5,,S
+1241,2,"Walcroft, Miss. Nellie",female,31,0,0,F.C.C. 13528,21,,S
+1242,1,"Greenfield, Mrs. Leo David (Blanche Strouse)",female,45,0,1,PC 17759,63.3583,D10 D12,C
+1243,2,"Stokes, Mr. Philip Joseph",male,25,0,0,F.C.C. 13540,10.5,,S
+1244,2,"Dibden, Mr. William",male,18,0,0,S.O.C. 14879,73.5,,S
+1245,2,"Herman, Mr. Samuel",male,49,1,2,220845,65,,S
+1246,3,"Dean, Miss. Elizabeth Gladys Millvina""""",female,0.17,1,2,C.A. 2315,20.575,,S
+1247,1,"Julian, Mr. Henry Forbes",male,50,0,0,113044,26,E60,S
+1248,1,"Brown, Mrs. John Murray (Caroline Lane Lamson)",female,59,2,0,11769,51.4792,C101,S
+1249,3,"Lockyer, Mr. Edward",male,,0,0,1222,7.8792,,S
+1250,3,"O'Keefe, Mr. Patrick",male,,0,0,368402,7.75,,Q
+1251,3,"Lindell, Mrs. Edvard Bengtsson (Elin Gerda Persson)",female,30,1,0,349910,15.55,,S
+1252,3,"Sage, Master. William Henry",male,14.5,8,2,CA. 2343,69.55,,S
+1253,2,"Mallet, Mrs. Albert (Antoinette Magnin)",female,24,1,1,S.C./PARIS 2079,37.0042,,C
+1254,2,"Ware, Mrs. John James (Florence Louise Long)",female,31,0,0,CA 31352,21,,S
+1255,3,"Strilic, Mr. Ivan",male,27,0,0,315083,8.6625,,S
+1256,1,"Harder, Mrs. George Achilles (Dorothy Annan)",female,25,1,0,11765,55.4417,E50,C
+1257,3,"Sage, Mrs. John (Annie Bullen)",female,,1,9,CA. 2343,69.55,,S
+1258,3,"Caram, Mr. Joseph",male,,1,0,2689,14.4583,,C
+1259,3,"Riihivouri, Miss. Susanna Juhantytar Sanni""""",female,22,0,0,3101295,39.6875,,S
+1260,1,"Gibson, Mrs. Leonard (Pauline C Boeson)",female,45,0,1,112378,59.4,,C
+1261,2,"Pallas y Castello, Mr. Emilio",male,29,0,0,SC/PARIS 2147,13.8583,,C
+1262,2,"Giles, Mr. Edgar",male,21,1,0,28133,11.5,,S
+1263,1,"Wilson, Miss. Helen Alice",female,31,0,0,16966,134.5,E39 E41,C
+1264,1,"Ismay, Mr. Joseph Bruce",male,49,0,0,112058,0,B52 B54 B56,S
+1265,2,"Harbeck, Mr. William H",male,44,0,0,248746,13,,S
+1266,1,"Dodge, Mrs. Washington (Ruth Vidaver)",female,54,1,1,33638,81.8583,A34,S
+1267,1,"Bowen, Miss. Grace Scott",female,45,0,0,PC 17608,262.375,,C
+1268,3,"Kink, Miss. Maria",female,22,2,0,315152,8.6625,,S
+1269,2,"Cotterill, Mr. Henry Harry""""",male,21,0,0,29107,11.5,,S
+1270,1,"Hipkins, Mr. William Edward",male,55,0,0,680,50,C39,S
+1271,3,"Asplund, Master. Carl Edgar",male,5,4,2,347077,31.3875,,S
+1272,3,"O'Connor, Mr. Patrick",male,,0,0,366713,7.75,,Q
+1273,3,"Foley, Mr. Joseph",male,26,0,0,330910,7.8792,,Q
+1274,3,"Risien, Mrs. Samuel (Emma)",female,,0,0,364498,14.5,,S
+1275,3,"McNamee, Mrs. Neal (Eileen O'Leary)",female,19,1,0,376566,16.1,,S
+1276,2,"Wheeler, Mr. Edwin Frederick""""",male,,0,0,SC/PARIS 2159,12.875,,S
+1277,2,"Herman, Miss. Kate",female,24,1,2,220845,65,,S
+1278,3,"Aronsson, Mr. Ernst Axel Algot",male,24,0,0,349911,7.775,,S
+1279,2,"Ashby, Mr. John",male,57,0,0,244346,13,,S
+1280,3,"Canavan, Mr. Patrick",male,21,0,0,364858,7.75,,Q
+1281,3,"Palsson, Master. Paul Folke",male,6,3,1,349909,21.075,,S
+1282,1,"Payne, Mr. Vivian Ponsonby",male,23,0,0,12749,93.5,B24,S
+1283,1,"Lines, Mrs. Ernest H (Elizabeth Lindsey James)",female,51,0,1,PC 17592,39.4,D28,S
+1284,3,"Abbott, Master. Eugene Joseph",male,13,0,2,C.A. 2673,20.25,,S
+1285,2,"Gilbert, Mr. William",male,47,0,0,C.A. 30769,10.5,,S
+1286,3,"Kink-Heilmann, Mr. Anton",male,29,3,1,315153,22.025,,S
+1287,1,"Smith, Mrs. Lucien Philip (Mary Eloise Hughes)",female,18,1,0,13695,60,C31,S
+1288,3,"Colbert, Mr. Patrick",male,24,0,0,371109,7.25,,Q
+1289,1,"Frolicher-Stehli, Mrs. Maxmillian (Margaretha Emerentia Stehli)",female,48,1,1,13567,79.2,B41,C
+1290,3,"Larsson-Rondberg, Mr. Edvard A",male,22,0,0,347065,7.775,,S
+1291,3,"Conlon, Mr. Thomas Henry",male,31,0,0,21332,7.7333,,Q
+1292,1,"Bonnell, Miss. Caroline",female,30,0,0,36928,164.8667,C7,S
+1293,2,"Gale, Mr. Harry",male,38,1,0,28664,21,,S
+1294,1,"Gibson, Miss. Dorothy Winifred",female,22,0,1,112378,59.4,,C
+1295,1,"Carrau, Mr. Jose Pedro",male,17,0,0,113059,47.1,,S
+1296,1,"Frauenthal, Mr. Isaac Gerald",male,43,1,0,17765,27.7208,D40,C
+1297,2,"Nourney, Mr. Alfred (Baron von Drachstedt"")""",male,20,0,0,SC/PARIS 2166,13.8625,D38,C
+1298,2,"Ware, Mr. William Jeffery",male,23,1,0,28666,10.5,,S
+1299,1,"Widener, Mr. George Dunton",male,50,1,1,113503,211.5,C80,C
+1300,3,"Riordan, Miss. Johanna Hannah""""",female,,0,0,334915,7.7208,,Q
+1301,3,"Peacock, Miss. Treasteall",female,3,1,1,SOTON/O.Q. 3101315,13.775,,S
+1302,3,"Naughton, Miss. Hannah",female,,0,0,365237,7.75,,Q
+1303,1,"Minahan, Mrs. William Edward (Lillian E Thorpe)",female,37,1,0,19928,90,C78,Q
+1304,3,"Henriksson, Miss. Jenny Lovisa",female,28,0,0,347086,7.775,,S
+1305,3,"Spector, Mr. Woolf",male,,0,0,A.5. 3236,8.05,,S
+1306,1,"Oliva y Ocana, Dona. Fermina",female,39,0,0,PC 17758,108.9,C105,C
+1307,3,"Saether, Mr. Simon Sivertsen",male,38.5,0,0,SOTON/O.Q. 3101262,7.25,,S
+1308,3,"Ware, Mr. Frederick",male,,0,0,359309,8.05,,S
+1309,3,"Peter, Master. Michael J",male,,1,1,2668,22.3583,,C
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/data_files/train.csv b/kaggle-titanic-engine/marvin_titanic_engine/data_files/train.csv
new file mode 100644
index 0000000..5cc466e
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/data_files/train.csv
@@ -0,0 +1,892 @@
+PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
+1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S
+2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C
+3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S
+4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S
+5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S
+6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q
+7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S
+8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S
+9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S
+10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C
+11,1,3,"Sandstrom, Miss. Marguerite Rut",female,4,1,1,PP 9549,16.7,G6,S
+12,1,1,"Bonnell, Miss. Elizabeth",female,58,0,0,113783,26.55,C103,S
+13,0,3,"Saundercock, Mr. William Henry",male,20,0,0,A/5. 2151,8.05,,S
+14,0,3,"Andersson, Mr. Anders Johan",male,39,1,5,347082,31.275,,S
+15,0,3,"Vestrom, Miss. Hulda Amanda Adolfina",female,14,0,0,350406,7.8542,,S
+16,1,2,"Hewlett, Mrs. (Mary D Kingcome) ",female,55,0,0,248706,16,,S
+17,0,3,"Rice, Master. Eugene",male,2,4,1,382652,29.125,,Q
+18,1,2,"Williams, Mr. Charles Eugene",male,,0,0,244373,13,,S
+19,0,3,"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",female,31,1,0,345763,18,,S
+20,1,3,"Masselmani, Mrs. Fatima",female,,0,0,2649,7.225,,C
+21,0,2,"Fynney, Mr. Joseph J",male,35,0,0,239865,26,,S
+22,1,2,"Beesley, Mr. Lawrence",male,34,0,0,248698,13,D56,S
+23,1,3,"McGowan, Miss. Anna ""Annie""",female,15,0,0,330923,8.0292,,Q
+24,1,1,"Sloper, Mr. William Thompson",male,28,0,0,113788,35.5,A6,S
+25,0,3,"Palsson, Miss. Torborg Danira",female,8,3,1,349909,21.075,,S
+26,1,3,"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",female,38,1,5,347077,31.3875,,S
+27,0,3,"Emir, Mr. Farred Chehab",male,,0,0,2631,7.225,,C
+28,0,1,"Fortune, Mr. Charles Alexander",male,19,3,2,19950,263,C23 C25 C27,S
+29,1,3,"O'Dwyer, Miss. Ellen ""Nellie""",female,,0,0,330959,7.8792,,Q
+30,0,3,"Todoroff, Mr. Lalio",male,,0,0,349216,7.8958,,S
+31,0,1,"Uruchurtu, Don. Manuel E",male,40,0,0,PC 17601,27.7208,,C
+32,1,1,"Spencer, Mrs. William Augustus (Marie Eugenie)",female,,1,0,PC 17569,146.5208,B78,C
+33,1,3,"Glynn, Miss. Mary Agatha",female,,0,0,335677,7.75,,Q
+34,0,2,"Wheadon, Mr. Edward H",male,66,0,0,C.A. 24579,10.5,,S
+35,0,1,"Meyer, Mr. Edgar Joseph",male,28,1,0,PC 17604,82.1708,,C
+36,0,1,"Holverson, Mr. Alexander Oskar",male,42,1,0,113789,52,,S
+37,1,3,"Mamee, Mr. Hanna",male,,0,0,2677,7.2292,,C
+38,0,3,"Cann, Mr. Ernest Charles",male,21,0,0,A./5. 2152,8.05,,S
+39,0,3,"Vander Planke, Miss. Augusta Maria",female,18,2,0,345764,18,,S
+40,1,3,"Nicola-Yarred, Miss. Jamila",female,14,1,0,2651,11.2417,,C
+41,0,3,"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)",female,40,1,0,7546,9.475,,S
+42,0,2,"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)",female,27,1,0,11668,21,,S
+43,0,3,"Kraeff, Mr. Theodor",male,,0,0,349253,7.8958,,C
+44,1,2,"Laroche, Miss. Simonne Marie Anne Andree",female,3,1,2,SC/Paris 2123,41.5792,,C
+45,1,3,"Devaney, Miss. Margaret Delia",female,19,0,0,330958,7.8792,,Q
+46,0,3,"Rogers, Mr. William John",male,,0,0,S.C./A.4. 23567,8.05,,S
+47,0,3,"Lennon, Mr. Denis",male,,1,0,370371,15.5,,Q
+48,1,3,"O'Driscoll, Miss. Bridget",female,,0,0,14311,7.75,,Q
+49,0,3,"Samaan, Mr. Youssef",male,,2,0,2662,21.6792,,C
+50,0,3,"Arnold-Franchi, Mrs. Josef (Josefine Franchi)",female,18,1,0,349237,17.8,,S
+51,0,3,"Panula, Master. Juha Niilo",male,7,4,1,3101295,39.6875,,S
+52,0,3,"Nosworthy, Mr. Richard Cater",male,21,0,0,A/4. 39886,7.8,,S
+53,1,1,"Harper, Mrs. Henry Sleeper (Myna Haxtun)",female,49,1,0,PC 17572,76.7292,D33,C
+54,1,2,"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)",female,29,1,0,2926,26,,S
+55,0,1,"Ostby, Mr. Engelhart Cornelius",male,65,0,1,113509,61.9792,B30,C
+56,1,1,"Woolner, Mr. Hugh",male,,0,0,19947,35.5,C52,S
+57,1,2,"Rugg, Miss. Emily",female,21,0,0,C.A. 31026,10.5,,S
+58,0,3,"Novel, Mr. Mansouer",male,28.5,0,0,2697,7.2292,,C
+59,1,2,"West, Miss. Constance Mirium",female,5,1,2,C.A. 34651,27.75,,S
+60,0,3,"Goodwin, Master. William Frederick",male,11,5,2,CA 2144,46.9,,S
+61,0,3,"Sirayanian, Mr. Orsen",male,22,0,0,2669,7.2292,,C
+62,1,1,"Icard, Miss. Amelie",female,38,0,0,113572,80,B28,
+63,0,1,"Harris, Mr. Henry Birkhardt",male,45,1,0,36973,83.475,C83,S
+64,0,3,"Skoog, Master. Harald",male,4,3,2,347088,27.9,,S
+65,0,1,"Stewart, Mr. Albert A",male,,0,0,PC 17605,27.7208,,C
+66,1,3,"Moubarek, Master. Gerios",male,,1,1,2661,15.2458,,C
+67,1,2,"Nye, Mrs. (Elizabeth Ramell)",female,29,0,0,C.A. 29395,10.5,F33,S
+68,0,3,"Crease, Mr. Ernest James",male,19,0,0,S.P. 3464,8.1583,,S
+69,1,3,"Andersson, Miss. Erna Alexandra",female,17,4,2,3101281,7.925,,S
+70,0,3,"Kink, Mr. Vincenz",male,26,2,0,315151,8.6625,,S
+71,0,2,"Jenkin, Mr. Stephen Curnow",male,32,0,0,C.A. 33111,10.5,,S
+72,0,3,"Goodwin, Miss. Lillian Amy",female,16,5,2,CA 2144,46.9,,S
+73,0,2,"Hood, Mr. Ambrose Jr",male,21,0,0,S.O.C. 14879,73.5,,S
+74,0,3,"Chronopoulos, Mr. Apostolos",male,26,1,0,2680,14.4542,,C
+75,1,3,"Bing, Mr. Lee",male,32,0,0,1601,56.4958,,S
+76,0,3,"Moen, Mr. Sigurd Hansen",male,25,0,0,348123,7.65,F G73,S
+77,0,3,"Staneff, Mr. Ivan",male,,0,0,349208,7.8958,,S
+78,0,3,"Moutal, Mr. Rahamin Haim",male,,0,0,374746,8.05,,S
+79,1,2,"Caldwell, Master. Alden Gates",male,0.83,0,2,248738,29,,S
+80,1,3,"Dowdell, Miss. Elizabeth",female,30,0,0,364516,12.475,,S
+81,0,3,"Waelens, Mr. Achille",male,22,0,0,345767,9,,S
+82,1,3,"Sheerlinck, Mr. Jan Baptist",male,29,0,0,345779,9.5,,S
+83,1,3,"McDermott, Miss. Brigdet Delia",female,,0,0,330932,7.7875,,Q
+84,0,1,"Carrau, Mr. Francisco M",male,28,0,0,113059,47.1,,S
+85,1,2,"Ilett, Miss. Bertha",female,17,0,0,SO/C 14885,10.5,,S
+86,1,3,"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)",female,33,3,0,3101278,15.85,,S
+87,0,3,"Ford, Mr. William Neal",male,16,1,3,W./C. 6608,34.375,,S
+88,0,3,"Slocovski, Mr. Selman Francis",male,,0,0,SOTON/OQ 392086,8.05,,S
+89,1,1,"Fortune, Miss. Mabel Helen",female,23,3,2,19950,263,C23 C25 C27,S
+90,0,3,"Celotti, Mr. Francesco",male,24,0,0,343275,8.05,,S
+91,0,3,"Christmann, Mr. Emil",male,29,0,0,343276,8.05,,S
+92,0,3,"Andreasson, Mr. Paul Edvin",male,20,0,0,347466,7.8542,,S
+93,0,1,"Chaffee, Mr. Herbert Fuller",male,46,1,0,W.E.P. 5734,61.175,E31,S
+94,0,3,"Dean, Mr. Bertram Frank",male,26,1,2,C.A. 2315,20.575,,S
+95,0,3,"Coxon, Mr. Daniel",male,59,0,0,364500,7.25,,S
+96,0,3,"Shorney, Mr. Charles Joseph",male,,0,0,374910,8.05,,S
+97,0,1,"Goldschmidt, Mr. George B",male,71,0,0,PC 17754,34.6542,A5,C
+98,1,1,"Greenfield, Mr. William Bertram",male,23,0,1,PC 17759,63.3583,D10 D12,C
+99,1,2,"Doling, Mrs. John T (Ada Julia Bone)",female,34,0,1,231919,23,,S
+100,0,2,"Kantor, Mr. Sinai",male,34,1,0,244367,26,,S
+101,0,3,"Petranec, Miss. Matilda",female,28,0,0,349245,7.8958,,S
+102,0,3,"Petroff, Mr. Pastcho (""Pentcho"")",male,,0,0,349215,7.8958,,S
+103,0,1,"White, Mr. Richard Frasar",male,21,0,1,35281,77.2875,D26,S
+104,0,3,"Johansson, Mr. Gustaf Joel",male,33,0,0,7540,8.6542,,S
+105,0,3,"Gustafsson, Mr. Anders Vilhelm",male,37,2,0,3101276,7.925,,S
+106,0,3,"Mionoff, Mr. Stoytcho",male,28,0,0,349207,7.8958,,S
+107,1,3,"Salkjelsvik, Miss. Anna Kristine",female,21,0,0,343120,7.65,,S
+108,1,3,"Moss, Mr. Albert Johan",male,,0,0,312991,7.775,,S
+109,0,3,"Rekic, Mr. Tido",male,38,0,0,349249,7.8958,,S
+110,1,3,"Moran, Miss. Bertha",female,,1,0,371110,24.15,,Q
+111,0,1,"Porter, Mr. Walter Chamberlain",male,47,0,0,110465,52,C110,S
+112,0,3,"Zabour, Miss. Hileni",female,14.5,1,0,2665,14.4542,,C
+113,0,3,"Barton, Mr. David John",male,22,0,0,324669,8.05,,S
+114,0,3,"Jussila, Miss. Katriina",female,20,1,0,4136,9.825,,S
+115,0,3,"Attalah, Miss. Malake",female,17,0,0,2627,14.4583,,C
+116,0,3,"Pekoniemi, Mr. Edvard",male,21,0,0,STON/O 2. 3101294,7.925,,S
+117,0,3,"Connors, Mr. Patrick",male,70.5,0,0,370369,7.75,,Q
+118,0,2,"Turpin, Mr. William John Robert",male,29,1,0,11668,21,,S
+119,0,1,"Baxter, Mr. Quigg Edmond",male,24,0,1,PC 17558,247.5208,B58 B60,C
+120,0,3,"Andersson, Miss. Ellis Anna Maria",female,2,4,2,347082,31.275,,S
+121,0,2,"Hickman, Mr. Stanley George",male,21,2,0,S.O.C. 14879,73.5,,S
+122,0,3,"Moore, Mr. Leonard Charles",male,,0,0,A4. 54510,8.05,,S
+123,0,2,"Nasser, Mr. Nicholas",male,32.5,1,0,237736,30.0708,,C
+124,1,2,"Webber, Miss. Susan",female,32.5,0,0,27267,13,E101,S
+125,0,1,"White, Mr. Percival Wayland",male,54,0,1,35281,77.2875,D26,S
+126,1,3,"Nicola-Yarred, Master. Elias",male,12,1,0,2651,11.2417,,C
+127,0,3,"McMahon, Mr. Martin",male,,0,0,370372,7.75,,Q
+128,1,3,"Madsen, Mr. Fridtjof Arne",male,24,0,0,C 17369,7.1417,,S
+129,1,3,"Peter, Miss. Anna",female,,1,1,2668,22.3583,F E69,C
+130,0,3,"Ekstrom, Mr. Johan",male,45,0,0,347061,6.975,,S
+131,0,3,"Drazenoic, Mr. Jozef",male,33,0,0,349241,7.8958,,C
+132,0,3,"Coelho, Mr. Domingos Fernandeo",male,20,0,0,SOTON/O.Q. 3101307,7.05,,S
+133,0,3,"Robins, Mrs. Alexander A (Grace Charity Laury)",female,47,1,0,A/5. 3337,14.5,,S
+134,1,2,"Weisz, Mrs. Leopold (Mathilde Francoise Pede)",female,29,1,0,228414,26,,S
+135,0,2,"Sobey, Mr. Samuel James Hayden",male,25,0,0,C.A. 29178,13,,S
+136,0,2,"Richard, Mr. Emile",male,23,0,0,SC/PARIS 2133,15.0458,,C
+137,1,1,"Newsom, Miss. Helen Monypeny",female,19,0,2,11752,26.2833,D47,S
+138,0,1,"Futrelle, Mr. Jacques Heath",male,37,1,0,113803,53.1,C123,S
+139,0,3,"Osen, Mr. Olaf Elon",male,16,0,0,7534,9.2167,,S
+140,0,1,"Giglio, Mr. Victor",male,24,0,0,PC 17593,79.2,B86,C
+141,0,3,"Boulos, Mrs. Joseph (Sultana)",female,,0,2,2678,15.2458,,C
+142,1,3,"Nysten, Miss. Anna Sofia",female,22,0,0,347081,7.75,,S
+143,1,3,"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)",female,24,1,0,STON/O2. 3101279,15.85,,S
+144,0,3,"Burke, Mr. Jeremiah",male,19,0,0,365222,6.75,,Q
+145,0,2,"Andrew, Mr. Edgardo Samuel",male,18,0,0,231945,11.5,,S
+146,0,2,"Nicholls, Mr. Joseph Charles",male,19,1,1,C.A. 33112,36.75,,S
+147,1,3,"Andersson, Mr. August Edvard (""Wennerstrom"")",male,27,0,0,350043,7.7958,,S
+148,0,3,"Ford, Miss. Robina Maggie ""Ruby""",female,9,2,2,W./C. 6608,34.375,,S
+149,0,2,"Navratil, Mr. Michel (""Louis M Hoffman"")",male,36.5,0,2,230080,26,F2,S
+150,0,2,"Byles, Rev. Thomas Roussel Davids",male,42,0,0,244310,13,,S
+151,0,2,"Bateman, Rev. Robert James",male,51,0,0,S.O.P. 1166,12.525,,S
+152,1,1,"Pears, Mrs. Thomas (Edith Wearne)",female,22,1,0,113776,66.6,C2,S
+153,0,3,"Meo, Mr. Alfonzo",male,55.5,0,0,A.5. 11206,8.05,,S
+154,0,3,"van Billiard, Mr. Austin Blyler",male,40.5,0,2,A/5. 851,14.5,,S
+155,0,3,"Olsen, Mr. Ole Martin",male,,0,0,Fa 265302,7.3125,,S
+156,0,1,"Williams, Mr. Charles Duane",male,51,0,1,PC 17597,61.3792,,C
+157,1,3,"Gilnagh, Miss. Katherine ""Katie""",female,16,0,0,35851,7.7333,,Q
+158,0,3,"Corn, Mr. Harry",male,30,0,0,SOTON/OQ 392090,8.05,,S
+159,0,3,"Smiljanic, Mr. Mile",male,,0,0,315037,8.6625,,S
+160,0,3,"Sage, Master. Thomas Henry",male,,8,2,CA. 2343,69.55,,S
+161,0,3,"Cribb, Mr. John Hatfield",male,44,0,1,371362,16.1,,S
+162,1,2,"Watt, Mrs. James (Elizabeth ""Bessie"" Inglis Milne)",female,40,0,0,C.A. 33595,15.75,,S
+163,0,3,"Bengtsson, Mr. John Viktor",male,26,0,0,347068,7.775,,S
+164,0,3,"Calic, Mr. Jovo",male,17,0,0,315093,8.6625,,S
+165,0,3,"Panula, Master. Eino Viljami",male,1,4,1,3101295,39.6875,,S
+166,1,3,"Goldsmith, Master. Frank John William ""Frankie""",male,9,0,2,363291,20.525,,S
+167,1,1,"Chibnall, Mrs. (Edith Martha Bowerman)",female,,0,1,113505,55,E33,S
+168,0,3,"Skoog, Mrs. William (Anna Bernhardina Karlsson)",female,45,1,4,347088,27.9,,S
+169,0,1,"Baumann, Mr. John D",male,,0,0,PC 17318,25.925,,S
+170,0,3,"Ling, Mr. Lee",male,28,0,0,1601,56.4958,,S
+171,0,1,"Van der hoef, Mr. Wyckoff",male,61,0,0,111240,33.5,B19,S
+172,0,3,"Rice, Master. Arthur",male,4,4,1,382652,29.125,,Q
+173,1,3,"Johnson, Miss. Eleanor Ileen",female,1,1,1,347742,11.1333,,S
+174,0,3,"Sivola, Mr. Antti Wilhelm",male,21,0,0,STON/O 2. 3101280,7.925,,S
+175,0,1,"Smith, Mr. James Clinch",male,56,0,0,17764,30.6958,A7,C
+176,0,3,"Klasen, Mr. Klas Albin",male,18,1,1,350404,7.8542,,S
+177,0,3,"Lefebre, Master. Henry Forbes",male,,3,1,4133,25.4667,,S
+178,0,1,"Isham, Miss. Ann Elizabeth",female,50,0,0,PC 17595,28.7125,C49,C
+179,0,2,"Hale, Mr. Reginald",male,30,0,0,250653,13,,S
+180,0,3,"Leonard, Mr. Lionel",male,36,0,0,LINE,0,,S
+181,0,3,"Sage, Miss. Constance Gladys",female,,8,2,CA. 2343,69.55,,S
+182,0,2,"Pernot, Mr. Rene",male,,0,0,SC/PARIS 2131,15.05,,C
+183,0,3,"Asplund, Master. Clarence Gustaf Hugo",male,9,4,2,347077,31.3875,,S
+184,1,2,"Becker, Master. Richard F",male,1,2,1,230136,39,F4,S
+185,1,3,"Kink-Heilmann, Miss. Luise Gretchen",female,4,0,2,315153,22.025,,S
+186,0,1,"Rood, Mr. Hugh Roscoe",male,,0,0,113767,50,A32,S
+187,1,3,"O'Brien, Mrs. Thomas (Johanna ""Hannah"" Godfrey)",female,,1,0,370365,15.5,,Q
+188,1,1,"Romaine, Mr. Charles Hallace (""Mr C Rolmane"")",male,45,0,0,111428,26.55,,S
+189,0,3,"Bourke, Mr. John",male,40,1,1,364849,15.5,,Q
+190,0,3,"Turcin, Mr. Stjepan",male,36,0,0,349247,7.8958,,S
+191,1,2,"Pinsky, Mrs. (Rosa)",female,32,0,0,234604,13,,S
+192,0,2,"Carbines, Mr. William",male,19,0,0,28424,13,,S
+193,1,3,"Andersen-Jensen, Miss. Carla Christine Nielsine",female,19,1,0,350046,7.8542,,S
+194,1,2,"Navratil, Master. Michel M",male,3,1,1,230080,26,F2,S
+195,1,1,"Brown, Mrs. James Joseph (Margaret Tobin)",female,44,0,0,PC 17610,27.7208,B4,C
+196,1,1,"Lurette, Miss. Elise",female,58,0,0,PC 17569,146.5208,B80,C
+197,0,3,"Mernagh, Mr. Robert",male,,0,0,368703,7.75,,Q
+198,0,3,"Olsen, Mr. Karl Siegwart Andreas",male,42,0,1,4579,8.4042,,S
+199,1,3,"Madigan, Miss. Margaret ""Maggie""",female,,0,0,370370,7.75,,Q
+200,0,2,"Yrois, Miss. Henriette (""Mrs Harbeck"")",female,24,0,0,248747,13,,S
+201,0,3,"Vande Walle, Mr. Nestor Cyriel",male,28,0,0,345770,9.5,,S
+202,0,3,"Sage, Mr. Frederick",male,,8,2,CA. 2343,69.55,,S
+203,0,3,"Johanson, Mr. Jakob Alfred",male,34,0,0,3101264,6.4958,,S
+204,0,3,"Youseff, Mr. Gerious",male,45.5,0,0,2628,7.225,,C
+205,1,3,"Cohen, Mr. Gurshon ""Gus""",male,18,0,0,A/5 3540,8.05,,S
+206,0,3,"Strom, Miss. Telma Matilda",female,2,0,1,347054,10.4625,G6,S
+207,0,3,"Backstrom, Mr. Karl Alfred",male,32,1,0,3101278,15.85,,S
+208,1,3,"Albimona, Mr. Nassef Cassem",male,26,0,0,2699,18.7875,,C
+209,1,3,"Carr, Miss. Helen ""Ellen""",female,16,0,0,367231,7.75,,Q
+210,1,1,"Blank, Mr. Henry",male,40,0,0,112277,31,A31,C
+211,0,3,"Ali, Mr. Ahmed",male,24,0,0,SOTON/O.Q. 3101311,7.05,,S
+212,1,2,"Cameron, Miss. Clear Annie",female,35,0,0,F.C.C. 13528,21,,S
+213,0,3,"Perkin, Mr. John Henry",male,22,0,0,A/5 21174,7.25,,S
+214,0,2,"Givard, Mr. Hans Kristensen",male,30,0,0,250646,13,,S
+215,0,3,"Kiernan, Mr. Philip",male,,1,0,367229,7.75,,Q
+216,1,1,"Newell, Miss. Madeleine",female,31,1,0,35273,113.275,D36,C
+217,1,3,"Honkanen, Miss. Eliina",female,27,0,0,STON/O2. 3101283,7.925,,S
+218,0,2,"Jacobsohn, Mr. Sidney Samuel",male,42,1,0,243847,27,,S
+219,1,1,"Bazzani, Miss. Albina",female,32,0,0,11813,76.2917,D15,C
+220,0,2,"Harris, Mr. Walter",male,30,0,0,W/C 14208,10.5,,S
+221,1,3,"Sunderland, Mr. Victor Francis",male,16,0,0,SOTON/OQ 392089,8.05,,S
+222,0,2,"Bracken, Mr. James H",male,27,0,0,220367,13,,S
+223,0,3,"Green, Mr. George Henry",male,51,0,0,21440,8.05,,S
+224,0,3,"Nenkoff, Mr. Christo",male,,0,0,349234,7.8958,,S
+225,1,1,"Hoyt, Mr. Frederick Maxfield",male,38,1,0,19943,90,C93,S
+226,0,3,"Berglund, Mr. Karl Ivar Sven",male,22,0,0,PP 4348,9.35,,S
+227,1,2,"Mellors, Mr. William John",male,19,0,0,SW/PP 751,10.5,,S
+228,0,3,"Lovell, Mr. John Hall (""Henry"")",male,20.5,0,0,A/5 21173,7.25,,S
+229,0,2,"Fahlstrom, Mr. Arne Jonas",male,18,0,0,236171,13,,S
+230,0,3,"Lefebre, Miss. Mathilde",female,,3,1,4133,25.4667,,S
+231,1,1,"Harris, Mrs. Henry Birkhardt (Irene Wallach)",female,35,1,0,36973,83.475,C83,S
+232,0,3,"Larsson, Mr. Bengt Edvin",male,29,0,0,347067,7.775,,S
+233,0,2,"Sjostedt, Mr. Ernst Adolf",male,59,0,0,237442,13.5,,S
+234,1,3,"Asplund, Miss. Lillian Gertrud",female,5,4,2,347077,31.3875,,S
+235,0,2,"Leyson, Mr. Robert William Norman",male,24,0,0,C.A. 29566,10.5,,S
+236,0,3,"Harknett, Miss. Alice Phoebe",female,,0,0,W./C. 6609,7.55,,S
+237,0,2,"Hold, Mr. Stephen",male,44,1,0,26707,26,,S
+238,1,2,"Collyer, Miss. Marjorie ""Lottie""",female,8,0,2,C.A. 31921,26.25,,S
+239,0,2,"Pengelly, Mr. Frederick William",male,19,0,0,28665,10.5,,S
+240,0,2,"Hunt, Mr. George Henry",male,33,0,0,SCO/W 1585,12.275,,S
+241,0,3,"Zabour, Miss. Thamine",female,,1,0,2665,14.4542,,C
+242,1,3,"Murphy, Miss. Katherine ""Kate""",female,,1,0,367230,15.5,,Q
+243,0,2,"Coleridge, Mr. Reginald Charles",male,29,0,0,W./C. 14263,10.5,,S
+244,0,3,"Maenpaa, Mr. Matti Alexanteri",male,22,0,0,STON/O 2. 3101275,7.125,,S
+245,0,3,"Attalah, Mr. Sleiman",male,30,0,0,2694,7.225,,C
+246,0,1,"Minahan, Dr. William Edward",male,44,2,0,19928,90,C78,Q
+247,0,3,"Lindahl, Miss. Agda Thorilda Viktoria",female,25,0,0,347071,7.775,,S
+248,1,2,"Hamalainen, Mrs. William (Anna)",female,24,0,2,250649,14.5,,S
+249,1,1,"Beckwith, Mr. Richard Leonard",male,37,1,1,11751,52.5542,D35,S
+250,0,2,"Carter, Rev. Ernest Courtenay",male,54,1,0,244252,26,,S
+251,0,3,"Reed, Mr. James George",male,,0,0,362316,7.25,,S
+252,0,3,"Strom, Mrs. Wilhelm (Elna Matilda Persson)",female,29,1,1,347054,10.4625,G6,S
+253,0,1,"Stead, Mr. William Thomas",male,62,0,0,113514,26.55,C87,S
+254,0,3,"Lobb, Mr. William Arthur",male,30,1,0,A/5. 3336,16.1,,S
+255,0,3,"Rosblom, Mrs. Viktor (Helena Wilhelmina)",female,41,0,2,370129,20.2125,,S
+256,1,3,"Touma, Mrs. Darwis (Hanne Youssef Razi)",female,29,0,2,2650,15.2458,,C
+257,1,1,"Thorne, Mrs. Gertrude Maybelle",female,,0,0,PC 17585,79.2,,C
+258,1,1,"Cherry, Miss. Gladys",female,30,0,0,110152,86.5,B77,S
+259,1,1,"Ward, Miss. Anna",female,35,0,0,PC 17755,512.3292,,C
+260,1,2,"Parrish, Mrs. (Lutie Davis)",female,50,0,1,230433,26,,S
+261,0,3,"Smith, Mr. Thomas",male,,0,0,384461,7.75,,Q
+262,1,3,"Asplund, Master. Edvin Rojj Felix",male,3,4,2,347077,31.3875,,S
+263,0,1,"Taussig, Mr. Emil",male,52,1,1,110413,79.65,E67,S
+264,0,1,"Harrison, Mr. William",male,40,0,0,112059,0,B94,S
+265,0,3,"Henry, Miss. Delia",female,,0,0,382649,7.75,,Q
+266,0,2,"Reeves, Mr. David",male,36,0,0,C.A. 17248,10.5,,S
+267,0,3,"Panula, Mr. Ernesti Arvid",male,16,4,1,3101295,39.6875,,S
+268,1,3,"Persson, Mr. Ernst Ulrik",male,25,1,0,347083,7.775,,S
+269,1,1,"Graham, Mrs. William Thompson (Edith Junkins)",female,58,0,1,PC 17582,153.4625,C125,S
+270,1,1,"Bissette, Miss. Amelia",female,35,0,0,PC 17760,135.6333,C99,S
+271,0,1,"Cairns, Mr. Alexander",male,,0,0,113798,31,,S
+272,1,3,"Tornquist, Mr. William Henry",male,25,0,0,LINE,0,,S
+273,1,2,"Mellinger, Mrs. (Elizabeth Anne Maidment)",female,41,0,1,250644,19.5,,S
+274,0,1,"Natsch, Mr. Charles H",male,37,0,1,PC 17596,29.7,C118,C
+275,1,3,"Healy, Miss. Hanora ""Nora""",female,,0,0,370375,7.75,,Q
+276,1,1,"Andrews, Miss. Kornelia Theodosia",female,63,1,0,13502,77.9583,D7,S
+277,0,3,"Lindblom, Miss. Augusta Charlotta",female,45,0,0,347073,7.75,,S
+278,0,2,"Parkes, Mr. Francis ""Frank""",male,,0,0,239853,0,,S
+279,0,3,"Rice, Master. Eric",male,7,4,1,382652,29.125,,Q
+280,1,3,"Abbott, Mrs. Stanton (Rosa Hunt)",female,35,1,1,C.A. 2673,20.25,,S
+281,0,3,"Duane, Mr. Frank",male,65,0,0,336439,7.75,,Q
+282,0,3,"Olsson, Mr. Nils Johan Goransson",male,28,0,0,347464,7.8542,,S
+283,0,3,"de Pelsmaeker, Mr. Alfons",male,16,0,0,345778,9.5,,S
+284,1,3,"Dorking, Mr. Edward Arthur",male,19,0,0,A/5. 10482,8.05,,S
+285,0,1,"Smith, Mr. Richard William",male,,0,0,113056,26,A19,S
+286,0,3,"Stankovic, Mr. Ivan",male,33,0,0,349239,8.6625,,C
+287,1,3,"de Mulder, Mr. Theodore",male,30,0,0,345774,9.5,,S
+288,0,3,"Naidenoff, Mr. Penko",male,22,0,0,349206,7.8958,,S
+289,1,2,"Hosono, Mr. Masabumi",male,42,0,0,237798,13,,S
+290,1,3,"Connolly, Miss. Kate",female,22,0,0,370373,7.75,,Q
+291,1,1,"Barber, Miss. Ellen ""Nellie""",female,26,0,0,19877,78.85,,S
+292,1,1,"Bishop, Mrs. Dickinson H (Helen Walton)",female,19,1,0,11967,91.0792,B49,C
+293,0,2,"Levy, Mr. Rene Jacques",male,36,0,0,SC/Paris 2163,12.875,D,C
+294,0,3,"Haas, Miss. Aloisia",female,24,0,0,349236,8.85,,S
+295,0,3,"Mineff, Mr. Ivan",male,24,0,0,349233,7.8958,,S
+296,0,1,"Lewy, Mr. Ervin G",male,,0,0,PC 17612,27.7208,,C
+297,0,3,"Hanna, Mr. Mansour",male,23.5,0,0,2693,7.2292,,C
+298,0,1,"Allison, Miss. Helen Loraine",female,2,1,2,113781,151.55,C22 C26,S
+299,1,1,"Saalfeld, Mr. Adolphe",male,,0,0,19988,30.5,C106,S
+300,1,1,"Baxter, Mrs. James (Helene DeLaudeniere Chaput)",female,50,0,1,PC 17558,247.5208,B58 B60,C
+301,1,3,"Kelly, Miss. Anna Katherine ""Annie Kate""",female,,0,0,9234,7.75,,Q
+302,1,3,"McCoy, Mr. Bernard",male,,2,0,367226,23.25,,Q
+303,0,3,"Johnson, Mr. William Cahoone Jr",male,19,0,0,LINE,0,,S
+304,1,2,"Keane, Miss. Nora A",female,,0,0,226593,12.35,E101,Q
+305,0,3,"Williams, Mr. Howard Hugh ""Harry""",male,,0,0,A/5 2466,8.05,,S
+306,1,1,"Allison, Master. Hudson Trevor",male,0.92,1,2,113781,151.55,C22 C26,S
+307,1,1,"Fleming, Miss. Margaret",female,,0,0,17421,110.8833,,C
+308,1,1,"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)",female,17,1,0,PC 17758,108.9,C65,C
+309,0,2,"Abelson, Mr. Samuel",male,30,1,0,P/PP 3381,24,,C
+310,1,1,"Francatelli, Miss. Laura Mabel",female,30,0,0,PC 17485,56.9292,E36,C
+311,1,1,"Hays, Miss. Margaret Bechstein",female,24,0,0,11767,83.1583,C54,C
+312,1,1,"Ryerson, Miss. Emily Borie",female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C
+313,0,2,"Lahtinen, Mrs. William (Anna Sylfven)",female,26,1,1,250651,26,,S
+314,0,3,"Hendekovic, Mr. Ignjac",male,28,0,0,349243,7.8958,,S
+315,0,2,"Hart, Mr. Benjamin",male,43,1,1,F.C.C. 13529,26.25,,S
+316,1,3,"Nilsson, Miss. Helmina Josefina",female,26,0,0,347470,7.8542,,S
+317,1,2,"Kantor, Mrs. Sinai (Miriam Sternin)",female,24,1,0,244367,26,,S
+318,0,2,"Moraweck, Dr. Ernest",male,54,0,0,29011,14,,S
+319,1,1,"Wick, Miss. Mary Natalie",female,31,0,2,36928,164.8667,C7,S
+320,1,1,"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)",female,40,1,1,16966,134.5,E34,C
+321,0,3,"Dennis, Mr. Samuel",male,22,0,0,A/5 21172,7.25,,S
+322,0,3,"Danoff, Mr. Yoto",male,27,0,0,349219,7.8958,,S
+323,1,2,"Slayter, Miss. Hilda Mary",female,30,0,0,234818,12.35,,Q
+324,1,2,"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)",female,22,1,1,248738,29,,S
+325,0,3,"Sage, Mr. George John Jr",male,,8,2,CA. 2343,69.55,,S
+326,1,1,"Young, Miss. Marie Grice",female,36,0,0,PC 17760,135.6333,C32,C
+327,0,3,"Nysveen, Mr. Johan Hansen",male,61,0,0,345364,6.2375,,S
+328,1,2,"Ball, Mrs. (Ada E Hall)",female,36,0,0,28551,13,D,S
+329,1,3,"Goldsmith, Mrs. Frank John (Emily Alice Brown)",female,31,1,1,363291,20.525,,S
+330,1,1,"Hippach, Miss. Jean Gertrude",female,16,0,1,111361,57.9792,B18,C
+331,1,3,"McCoy, Miss. Agnes",female,,2,0,367226,23.25,,Q
+332,0,1,"Partner, Mr. Austen",male,45.5,0,0,113043,28.5,C124,S
+333,0,1,"Graham, Mr. George Edward",male,38,0,1,PC 17582,153.4625,C91,S
+334,0,3,"Vander Planke, Mr. Leo Edmondus",male,16,2,0,345764,18,,S
+335,1,1,"Frauenthal, Mrs. Henry William (Clara Heinsheimer)",female,,1,0,PC 17611,133.65,,S
+336,0,3,"Denkoff, Mr. Mitto",male,,0,0,349225,7.8958,,S
+337,0,1,"Pears, Mr. Thomas Clinton",male,29,1,0,113776,66.6,C2,S
+338,1,1,"Burns, Miss. Elizabeth Margaret",female,41,0,0,16966,134.5,E40,C
+339,1,3,"Dahl, Mr. Karl Edwart",male,45,0,0,7598,8.05,,S
+340,0,1,"Blackwell, Mr. Stephen Weart",male,45,0,0,113784,35.5,T,S
+341,1,2,"Navratil, Master. Edmond Roger",male,2,1,1,230080,26,F2,S
+342,1,1,"Fortune, Miss. Alice Elizabeth",female,24,3,2,19950,263,C23 C25 C27,S
+343,0,2,"Collander, Mr. Erik Gustaf",male,28,0,0,248740,13,,S
+344,0,2,"Sedgwick, Mr. Charles Frederick Waddington",male,25,0,0,244361,13,,S
+345,0,2,"Fox, Mr. Stanley Hubert",male,36,0,0,229236,13,,S
+346,1,2,"Brown, Miss. Amelia ""Mildred""",female,24,0,0,248733,13,F33,S
+347,1,2,"Smith, Miss. Marion Elsie",female,40,0,0,31418,13,,S
+348,1,3,"Davison, Mrs. Thomas Henry (Mary E Finck)",female,,1,0,386525,16.1,,S
+349,1,3,"Coutts, Master. William Loch ""William""",male,3,1,1,C.A. 37671,15.9,,S
+350,0,3,"Dimic, Mr. Jovan",male,42,0,0,315088,8.6625,,S
+351,0,3,"Odahl, Mr. Nils Martin",male,23,0,0,7267,9.225,,S
+352,0,1,"Williams-Lambert, Mr. Fletcher Fellows",male,,0,0,113510,35,C128,S
+353,0,3,"Elias, Mr. Tannous",male,15,1,1,2695,7.2292,,C
+354,0,3,"Arnold-Franchi, Mr. Josef",male,25,1,0,349237,17.8,,S
+355,0,3,"Yousif, Mr. Wazli",male,,0,0,2647,7.225,,C
+356,0,3,"Vanden Steen, Mr. Leo Peter",male,28,0,0,345783,9.5,,S
+357,1,1,"Bowerman, Miss. Elsie Edith",female,22,0,1,113505,55,E33,S
+358,0,2,"Funk, Miss. Annie Clemmer",female,38,0,0,237671,13,,S
+359,1,3,"McGovern, Miss. Mary",female,,0,0,330931,7.8792,,Q
+360,1,3,"Mockler, Miss. Helen Mary ""Ellie""",female,,0,0,330980,7.8792,,Q
+361,0,3,"Skoog, Mr. Wilhelm",male,40,1,4,347088,27.9,,S
+362,0,2,"del Carlo, Mr. Sebastiano",male,29,1,0,SC/PARIS 2167,27.7208,,C
+363,0,3,"Barbara, Mrs. (Catherine David)",female,45,0,1,2691,14.4542,,C
+364,0,3,"Asim, Mr. Adola",male,35,0,0,SOTON/O.Q. 3101310,7.05,,S
+365,0,3,"O'Brien, Mr. Thomas",male,,1,0,370365,15.5,,Q
+366,0,3,"Adahl, Mr. Mauritz Nils Martin",male,30,0,0,C 7076,7.25,,S
+367,1,1,"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)",female,60,1,0,110813,75.25,D37,C
+368,1,3,"Moussa, Mrs. (Mantoura Boulos)",female,,0,0,2626,7.2292,,C
+369,1,3,"Jermyn, Miss. Annie",female,,0,0,14313,7.75,,Q
+370,1,1,"Aubart, Mme. Leontine Pauline",female,24,0,0,PC 17477,69.3,B35,C
+371,1,1,"Harder, Mr. George Achilles",male,25,1,0,11765,55.4417,E50,C
+372,0,3,"Wiklund, Mr. Jakob Alfred",male,18,1,0,3101267,6.4958,,S
+373,0,3,"Beavan, Mr. William Thomas",male,19,0,0,323951,8.05,,S
+374,0,1,"Ringhini, Mr. Sante",male,22,0,0,PC 17760,135.6333,,C
+375,0,3,"Palsson, Miss. Stina Viola",female,3,3,1,349909,21.075,,S
+376,1,1,"Meyer, Mrs. Edgar Joseph (Leila Saks)",female,,1,0,PC 17604,82.1708,,C
+377,1,3,"Landergren, Miss. Aurora Adelia",female,22,0,0,C 7077,7.25,,S
+378,0,1,"Widener, Mr. Harry Elkins",male,27,0,2,113503,211.5,C82,C
+379,0,3,"Betros, Mr. Tannous",male,20,0,0,2648,4.0125,,C
+380,0,3,"Gustafsson, Mr. Karl Gideon",male,19,0,0,347069,7.775,,S
+381,1,1,"Bidois, Miss. Rosalie",female,42,0,0,PC 17757,227.525,,C
+382,1,3,"Nakid, Miss. Maria (""Mary"")",female,1,0,2,2653,15.7417,,C
+383,0,3,"Tikkanen, Mr. Juho",male,32,0,0,STON/O 2. 3101293,7.925,,S
+384,1,1,"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)",female,35,1,0,113789,52,,S
+385,0,3,"Plotcharsky, Mr. Vasil",male,,0,0,349227,7.8958,,S
+386,0,2,"Davies, Mr. Charles Henry",male,18,0,0,S.O.C. 14879,73.5,,S
+387,0,3,"Goodwin, Master. Sidney Leonard",male,1,5,2,CA 2144,46.9,,S
+388,1,2,"Buss, Miss. Kate",female,36,0,0,27849,13,,S
+389,0,3,"Sadlier, Mr. Matthew",male,,0,0,367655,7.7292,,Q
+390,1,2,"Lehmann, Miss. Bertha",female,17,0,0,SC 1748,12,,C
+391,1,1,"Carter, Mr. William Ernest",male,36,1,2,113760,120,B96 B98,S
+392,1,3,"Jansson, Mr. Carl Olof",male,21,0,0,350034,7.7958,,S
+393,0,3,"Gustafsson, Mr. Johan Birger",male,28,2,0,3101277,7.925,,S
+394,1,1,"Newell, Miss. Marjorie",female,23,1,0,35273,113.275,D36,C
+395,1,3,"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)",female,24,0,2,PP 9549,16.7,G6,S
+396,0,3,"Johansson, Mr. Erik",male,22,0,0,350052,7.7958,,S
+397,0,3,"Olsson, Miss. Elina",female,31,0,0,350407,7.8542,,S
+398,0,2,"McKane, Mr. Peter David",male,46,0,0,28403,26,,S
+399,0,2,"Pain, Dr. Alfred",male,23,0,0,244278,10.5,,S
+400,1,2,"Trout, Mrs. William H (Jessie L)",female,28,0,0,240929,12.65,,S
+401,1,3,"Niskanen, Mr. Juha",male,39,0,0,STON/O 2. 3101289,7.925,,S
+402,0,3,"Adams, Mr. John",male,26,0,0,341826,8.05,,S
+403,0,3,"Jussila, Miss. Mari Aina",female,21,1,0,4137,9.825,,S
+404,0,3,"Hakkarainen, Mr. Pekka Pietari",male,28,1,0,STON/O2. 3101279,15.85,,S
+405,0,3,"Oreskovic, Miss. Marija",female,20,0,0,315096,8.6625,,S
+406,0,2,"Gale, Mr. Shadrach",male,34,1,0,28664,21,,S
+407,0,3,"Widegren, Mr. Carl/Charles Peter",male,51,0,0,347064,7.75,,S
+408,1,2,"Richards, Master. William Rowe",male,3,1,1,29106,18.75,,S
+409,0,3,"Birkeland, Mr. Hans Martin Monsen",male,21,0,0,312992,7.775,,S
+410,0,3,"Lefebre, Miss. Ida",female,,3,1,4133,25.4667,,S
+411,0,3,"Sdycoff, Mr. Todor",male,,0,0,349222,7.8958,,S
+412,0,3,"Hart, Mr. Henry",male,,0,0,394140,6.8583,,Q
+413,1,1,"Minahan, Miss. Daisy E",female,33,1,0,19928,90,C78,Q
+414,0,2,"Cunningham, Mr. Alfred Fleming",male,,0,0,239853,0,,S
+415,1,3,"Sundman, Mr. Johan Julian",male,44,0,0,STON/O 2. 3101269,7.925,,S
+416,0,3,"Meek, Mrs. Thomas (Annie Louise Rowley)",female,,0,0,343095,8.05,,S
+417,1,2,"Drew, Mrs. James Vivian (Lulu Thorne Christian)",female,34,1,1,28220,32.5,,S
+418,1,2,"Silven, Miss. Lyyli Karoliina",female,18,0,2,250652,13,,S
+419,0,2,"Matthews, Mr. William John",male,30,0,0,28228,13,,S
+420,0,3,"Van Impe, Miss. Catharina",female,10,0,2,345773,24.15,,S
+421,0,3,"Gheorgheff, Mr. Stanio",male,,0,0,349254,7.8958,,C
+422,0,3,"Charters, Mr. David",male,21,0,0,A/5. 13032,7.7333,,Q
+423,0,3,"Zimmerman, Mr. Leo",male,29,0,0,315082,7.875,,S
+424,0,3,"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)",female,28,1,1,347080,14.4,,S
+425,0,3,"Rosblom, Mr. Viktor Richard",male,18,1,1,370129,20.2125,,S
+426,0,3,"Wiseman, Mr. Phillippe",male,,0,0,A/4. 34244,7.25,,S
+427,1,2,"Clarke, Mrs. Charles V (Ada Maria Winfield)",female,28,1,0,2003,26,,S
+428,1,2,"Phillips, Miss. Kate Florence (""Mrs Kate Louise Phillips Marshall"")",female,19,0,0,250655,26,,S
+429,0,3,"Flynn, Mr. James",male,,0,0,364851,7.75,,Q
+430,1,3,"Pickard, Mr. Berk (Berk Trembisky)",male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S
+431,1,1,"Bjornstrom-Steffansson, Mr. Mauritz Hakan",male,28,0,0,110564,26.55,C52,S
+432,1,3,"Thorneycroft, Mrs. Percival (Florence Kate White)",female,,1,0,376564,16.1,,S
+433,1,2,"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)",female,42,1,0,SC/AH 3085,26,,S
+434,0,3,"Kallio, Mr. Nikolai Erland",male,17,0,0,STON/O 2. 3101274,7.125,,S
+435,0,1,"Silvey, Mr. William Baird",male,50,1,0,13507,55.9,E44,S
+436,1,1,"Carter, Miss. Lucile Polk",female,14,1,2,113760,120,B96 B98,S
+437,0,3,"Ford, Miss. Doolina Margaret ""Daisy""",female,21,2,2,W./C. 6608,34.375,,S
+438,1,2,"Richards, Mrs. Sidney (Emily Hocking)",female,24,2,3,29106,18.75,,S
+439,0,1,"Fortune, Mr. Mark",male,64,1,4,19950,263,C23 C25 C27,S
+440,0,2,"Kvillner, Mr. Johan Henrik Johannesson",male,31,0,0,C.A. 18723,10.5,,S
+441,1,2,"Hart, Mrs. Benjamin (Esther Ada Bloomfield)",female,45,1,1,F.C.C. 13529,26.25,,S
+442,0,3,"Hampe, Mr. Leon",male,20,0,0,345769,9.5,,S
+443,0,3,"Petterson, Mr. Johan Emil",male,25,1,0,347076,7.775,,S
+444,1,2,"Reynaldo, Ms. Encarnacion",female,28,0,0,230434,13,,S
+445,1,3,"Johannesen-Bratthammer, Mr. Bernt",male,,0,0,65306,8.1125,,S
+446,1,1,"Dodge, Master. Washington",male,4,0,2,33638,81.8583,A34,S
+447,1,2,"Mellinger, Miss. Madeleine Violet",female,13,0,1,250644,19.5,,S
+448,1,1,"Seward, Mr. Frederic Kimber",male,34,0,0,113794,26.55,,S
+449,1,3,"Baclini, Miss. Marie Catherine",female,5,2,1,2666,19.2583,,C
+450,1,1,"Peuchen, Major. Arthur Godfrey",male,52,0,0,113786,30.5,C104,S
+451,0,2,"West, Mr. Edwy Arthur",male,36,1,2,C.A. 34651,27.75,,S
+452,0,3,"Hagland, Mr. Ingvald Olai Olsen",male,,1,0,65303,19.9667,,S
+453,0,1,"Foreman, Mr. Benjamin Laventall",male,30,0,0,113051,27.75,C111,C
+454,1,1,"Goldenberg, Mr. Samuel L",male,49,1,0,17453,89.1042,C92,C
+455,0,3,"Peduzzi, Mr. Joseph",male,,0,0,A/5 2817,8.05,,S
+456,1,3,"Jalsevac, Mr. Ivan",male,29,0,0,349240,7.8958,,C
+457,0,1,"Millet, Mr. Francis Davis",male,65,0,0,13509,26.55,E38,S
+458,1,1,"Kenyon, Mrs. Frederick R (Marion)",female,,1,0,17464,51.8625,D21,S
+459,1,2,"Toomey, Miss. Ellen",female,50,0,0,F.C.C. 13531,10.5,,S
+460,0,3,"O'Connor, Mr. Maurice",male,,0,0,371060,7.75,,Q
+461,1,1,"Anderson, Mr. Harry",male,48,0,0,19952,26.55,E12,S
+462,0,3,"Morley, Mr. William",male,34,0,0,364506,8.05,,S
+463,0,1,"Gee, Mr. Arthur H",male,47,0,0,111320,38.5,E63,S
+464,0,2,"Milling, Mr. Jacob Christian",male,48,0,0,234360,13,,S
+465,0,3,"Maisner, Mr. Simon",male,,0,0,A/S 2816,8.05,,S
+466,0,3,"Goncalves, Mr. Manuel Estanslas",male,38,0,0,SOTON/O.Q. 3101306,7.05,,S
+467,0,2,"Campbell, Mr. William",male,,0,0,239853,0,,S
+468,0,1,"Smart, Mr. John Montgomery",male,56,0,0,113792,26.55,,S
+469,0,3,"Scanlan, Mr. James",male,,0,0,36209,7.725,,Q
+470,1,3,"Baclini, Miss. Helene Barbara",female,0.75,2,1,2666,19.2583,,C
+471,0,3,"Keefe, Mr. Arthur",male,,0,0,323592,7.25,,S
+472,0,3,"Cacic, Mr. Luka",male,38,0,0,315089,8.6625,,S
+473,1,2,"West, Mrs. Edwy Arthur (Ada Mary Worth)",female,33,1,2,C.A. 34651,27.75,,S
+474,1,2,"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)",female,23,0,0,SC/AH Basle 541,13.7917,D,C
+475,0,3,"Strandberg, Miss. Ida Sofia",female,22,0,0,7553,9.8375,,S
+476,0,1,"Clifford, Mr. George Quincy",male,,0,0,110465,52,A14,S
+477,0,2,"Renouf, Mr. Peter Henry",male,34,1,0,31027,21,,S
+478,0,3,"Braund, Mr. Lewis Richard",male,29,1,0,3460,7.0458,,S
+479,0,3,"Karlsson, Mr. Nils August",male,22,0,0,350060,7.5208,,S
+480,1,3,"Hirvonen, Miss. Hildur E",female,2,0,1,3101298,12.2875,,S
+481,0,3,"Goodwin, Master. Harold Victor",male,9,5,2,CA 2144,46.9,,S
+482,0,2,"Frost, Mr. Anthony Wood ""Archie""",male,,0,0,239854,0,,S
+483,0,3,"Rouse, Mr. Richard Henry",male,50,0,0,A/5 3594,8.05,,S
+484,1,3,"Turkula, Mrs. (Hedwig)",female,63,0,0,4134,9.5875,,S
+485,1,1,"Bishop, Mr. Dickinson H",male,25,1,0,11967,91.0792,B49,C
+486,0,3,"Lefebre, Miss. Jeannie",female,,3,1,4133,25.4667,,S
+487,1,1,"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)",female,35,1,0,19943,90,C93,S
+488,0,1,"Kent, Mr. Edward Austin",male,58,0,0,11771,29.7,B37,C
+489,0,3,"Somerton, Mr. Francis William",male,30,0,0,A.5. 18509,8.05,,S
+490,1,3,"Coutts, Master. Eden Leslie ""Neville""",male,9,1,1,C.A. 37671,15.9,,S
+491,0,3,"Hagland, Mr. Konrad Mathias Reiersen",male,,1,0,65304,19.9667,,S
+492,0,3,"Windelov, Mr. Einar",male,21,0,0,SOTON/OQ 3101317,7.25,,S
+493,0,1,"Molson, Mr. Harry Markland",male,55,0,0,113787,30.5,C30,S
+494,0,1,"Artagaveytia, Mr. Ramon",male,71,0,0,PC 17609,49.5042,,C
+495,0,3,"Stanley, Mr. Edward Roland",male,21,0,0,A/4 45380,8.05,,S
+496,0,3,"Yousseff, Mr. Gerious",male,,0,0,2627,14.4583,,C
+497,1,1,"Eustis, Miss. Elizabeth Mussey",female,54,1,0,36947,78.2667,D20,C
+498,0,3,"Shellard, Mr. Frederick William",male,,0,0,C.A. 6212,15.1,,S
+499,0,1,"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)",female,25,1,2,113781,151.55,C22 C26,S
+500,0,3,"Svensson, Mr. Olof",male,24,0,0,350035,7.7958,,S
+501,0,3,"Calic, Mr. Petar",male,17,0,0,315086,8.6625,,S
+502,0,3,"Canavan, Miss. Mary",female,21,0,0,364846,7.75,,Q
+503,0,3,"O'Sullivan, Miss. Bridget Mary",female,,0,0,330909,7.6292,,Q
+504,0,3,"Laitinen, Miss. Kristina Sofia",female,37,0,0,4135,9.5875,,S
+505,1,1,"Maioni, Miss. Roberta",female,16,0,0,110152,86.5,B79,S
+506,0,1,"Penasco y Castellana, Mr. Victor de Satode",male,18,1,0,PC 17758,108.9,C65,C
+507,1,2,"Quick, Mrs. Frederick Charles (Jane Richards)",female,33,0,2,26360,26,,S
+508,1,1,"Bradley, Mr. George (""George Arthur Brayton"")",male,,0,0,111427,26.55,,S
+509,0,3,"Olsen, Mr. Henry Margido",male,28,0,0,C 4001,22.525,,S
+510,1,3,"Lang, Mr. Fang",male,26,0,0,1601,56.4958,,S
+511,1,3,"Daly, Mr. Eugene Patrick",male,29,0,0,382651,7.75,,Q
+512,0,3,"Webber, Mr. James",male,,0,0,SOTON/OQ 3101316,8.05,,S
+513,1,1,"McGough, Mr. James Robert",male,36,0,0,PC 17473,26.2875,E25,S
+514,1,1,"Rothschild, Mrs. Martin (Elizabeth L. Barrett)",female,54,1,0,PC 17603,59.4,,C
+515,0,3,"Coleff, Mr. Satio",male,24,0,0,349209,7.4958,,S
+516,0,1,"Walker, Mr. William Anderson",male,47,0,0,36967,34.0208,D46,S
+517,1,2,"Lemore, Mrs. (Amelia Milley)",female,34,0,0,C.A. 34260,10.5,F33,S
+518,0,3,"Ryan, Mr. Patrick",male,,0,0,371110,24.15,,Q
+519,1,2,"Angle, Mrs. William A (Florence ""Mary"" Agnes Hughes)",female,36,1,0,226875,26,,S
+520,0,3,"Pavlovic, Mr. Stefo",male,32,0,0,349242,7.8958,,S
+521,1,1,"Perreault, Miss. Anne",female,30,0,0,12749,93.5,B73,S
+522,0,3,"Vovk, Mr. Janko",male,22,0,0,349252,7.8958,,S
+523,0,3,"Lahoud, Mr. Sarkis",male,,0,0,2624,7.225,,C
+524,1,1,"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)",female,44,0,1,111361,57.9792,B18,C
+525,0,3,"Kassem, Mr. Fared",male,,0,0,2700,7.2292,,C
+526,0,3,"Farrell, Mr. James",male,40.5,0,0,367232,7.75,,Q
+527,1,2,"Ridsdale, Miss. Lucy",female,50,0,0,W./C. 14258,10.5,,S
+528,0,1,"Farthing, Mr. John",male,,0,0,PC 17483,221.7792,C95,S
+529,0,3,"Salonen, Mr. Johan Werner",male,39,0,0,3101296,7.925,,S
+530,0,2,"Hocking, Mr. Richard George",male,23,2,1,29104,11.5,,S
+531,1,2,"Quick, Miss. Phyllis May",female,2,1,1,26360,26,,S
+532,0,3,"Toufik, Mr. Nakli",male,,0,0,2641,7.2292,,C
+533,0,3,"Elias, Mr. Joseph Jr",male,17,1,1,2690,7.2292,,C
+534,1,3,"Peter, Mrs. Catherine (Catherine Rizk)",female,,0,2,2668,22.3583,,C
+535,0,3,"Cacic, Miss. Marija",female,30,0,0,315084,8.6625,,S
+536,1,2,"Hart, Miss. Eva Miriam",female,7,0,2,F.C.C. 13529,26.25,,S
+537,0,1,"Butt, Major. Archibald Willingham",male,45,0,0,113050,26.55,B38,S
+538,1,1,"LeRoy, Miss. Bertha",female,30,0,0,PC 17761,106.425,,C
+539,0,3,"Risien, Mr. Samuel Beard",male,,0,0,364498,14.5,,S
+540,1,1,"Frolicher, Miss. Hedwig Margaritha",female,22,0,2,13568,49.5,B39,C
+541,1,1,"Crosby, Miss. Harriet R",female,36,0,2,WE/P 5735,71,B22,S
+542,0,3,"Andersson, Miss. Ingeborg Constanzia",female,9,4,2,347082,31.275,,S
+543,0,3,"Andersson, Miss. Sigrid Elisabeth",female,11,4,2,347082,31.275,,S
+544,1,2,"Beane, Mr. Edward",male,32,1,0,2908,26,,S
+545,0,1,"Douglas, Mr. Walter Donald",male,50,1,0,PC 17761,106.425,C86,C
+546,0,1,"Nicholson, Mr. Arthur Ernest",male,64,0,0,693,26,,S
+547,1,2,"Beane, Mrs. Edward (Ethel Clarke)",female,19,1,0,2908,26,,S
+548,1,2,"Padro y Manent, Mr. Julian",male,,0,0,SC/PARIS 2146,13.8625,,C
+549,0,3,"Goldsmith, Mr. Frank John",male,33,1,1,363291,20.525,,S
+550,1,2,"Davies, Master. John Morgan Jr",male,8,1,1,C.A. 33112,36.75,,S
+551,1,1,"Thayer, Mr. John Borland Jr",male,17,0,2,17421,110.8833,C70,C
+552,0,2,"Sharp, Mr. Percival James R",male,27,0,0,244358,26,,S
+553,0,3,"O'Brien, Mr. Timothy",male,,0,0,330979,7.8292,,Q
+554,1,3,"Leeni, Mr. Fahim (""Philip Zenni"")",male,22,0,0,2620,7.225,,C
+555,1,3,"Ohman, Miss. Velin",female,22,0,0,347085,7.775,,S
+556,0,1,"Wright, Mr. George",male,62,0,0,113807,26.55,,S
+557,1,1,"Duff Gordon, Lady. (Lucille Christiana Sutherland) (""Mrs Morgan"")",female,48,1,0,11755,39.6,A16,C
+558,0,1,"Robbins, Mr. Victor",male,,0,0,PC 17757,227.525,,C
+559,1,1,"Taussig, Mrs. Emil (Tillie Mandelbaum)",female,39,1,1,110413,79.65,E67,S
+560,1,3,"de Messemaeker, Mrs. Guillaume Joseph (Emma)",female,36,1,0,345572,17.4,,S
+561,0,3,"Morrow, Mr. Thomas Rowan",male,,0,0,372622,7.75,,Q
+562,0,3,"Sivic, Mr. Husein",male,40,0,0,349251,7.8958,,S
+563,0,2,"Norman, Mr. Robert Douglas",male,28,0,0,218629,13.5,,S
+564,0,3,"Simmons, Mr. John",male,,0,0,SOTON/OQ 392082,8.05,,S
+565,0,3,"Meanwell, Miss. (Marion Ogden)",female,,0,0,SOTON/O.Q. 392087,8.05,,S
+566,0,3,"Davies, Mr. Alfred J",male,24,2,0,A/4 48871,24.15,,S
+567,0,3,"Stoytcheff, Mr. Ilia",male,19,0,0,349205,7.8958,,S
+568,0,3,"Palsson, Mrs. Nils (Alma Cornelia Berglund)",female,29,0,4,349909,21.075,,S
+569,0,3,"Doharr, Mr. Tannous",male,,0,0,2686,7.2292,,C
+570,1,3,"Jonsson, Mr. Carl",male,32,0,0,350417,7.8542,,S
+571,1,2,"Harris, Mr. George",male,62,0,0,S.W./PP 752,10.5,,S
+572,1,1,"Appleton, Mrs. Edward Dale (Charlotte Lamson)",female,53,2,0,11769,51.4792,C101,S
+573,1,1,"Flynn, Mr. John Irwin (""Irving"")",male,36,0,0,PC 17474,26.3875,E25,S
+574,1,3,"Kelly, Miss. Mary",female,,0,0,14312,7.75,,Q
+575,0,3,"Rush, Mr. Alfred George John",male,16,0,0,A/4. 20589,8.05,,S
+576,0,3,"Patchett, Mr. George",male,19,0,0,358585,14.5,,S
+577,1,2,"Garside, Miss. Ethel",female,34,0,0,243880,13,,S
+578,1,1,"Silvey, Mrs. William Baird (Alice Munger)",female,39,1,0,13507,55.9,E44,S
+579,0,3,"Caram, Mrs. Joseph (Maria Elias)",female,,1,0,2689,14.4583,,C
+580,1,3,"Jussila, Mr. Eiriik",male,32,0,0,STON/O 2. 3101286,7.925,,S
+581,1,2,"Christy, Miss. Julie Rachel",female,25,1,1,237789,30,,S
+582,1,1,"Thayer, Mrs. John Borland (Marian Longstreth Morris)",female,39,1,1,17421,110.8833,C68,C
+583,0,2,"Downton, Mr. William James",male,54,0,0,28403,26,,S
+584,0,1,"Ross, Mr. John Hugo",male,36,0,0,13049,40.125,A10,C
+585,0,3,"Paulner, Mr. Uscher",male,,0,0,3411,8.7125,,C
+586,1,1,"Taussig, Miss. Ruth",female,18,0,2,110413,79.65,E68,S
+587,0,2,"Jarvis, Mr. John Denzil",male,47,0,0,237565,15,,S
+588,1,1,"Frolicher-Stehli, Mr. Maxmillian",male,60,1,1,13567,79.2,B41,C
+589,0,3,"Gilinski, Mr. Eliezer",male,22,0,0,14973,8.05,,S
+590,0,3,"Murdlin, Mr. Joseph",male,,0,0,A./5. 3235,8.05,,S
+591,0,3,"Rintamaki, Mr. Matti",male,35,0,0,STON/O 2. 3101273,7.125,,S
+592,1,1,"Stephenson, Mrs. Walter Bertram (Martha Eustis)",female,52,1,0,36947,78.2667,D20,C
+593,0,3,"Elsbury, Mr. William James",male,47,0,0,A/5 3902,7.25,,S
+594,0,3,"Bourke, Miss. Mary",female,,0,2,364848,7.75,,Q
+595,0,2,"Chapman, Mr. John Henry",male,37,1,0,SC/AH 29037,26,,S
+596,0,3,"Van Impe, Mr. Jean Baptiste",male,36,1,1,345773,24.15,,S
+597,1,2,"Leitch, Miss. Jessie Wills",female,,0,0,248727,33,,S
+598,0,3,"Johnson, Mr. Alfred",male,49,0,0,LINE,0,,S
+599,0,3,"Boulos, Mr. Hanna",male,,0,0,2664,7.225,,C
+600,1,1,"Duff Gordon, Sir. Cosmo Edmund (""Mr Morgan"")",male,49,1,0,PC 17485,56.9292,A20,C
+601,1,2,"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)",female,24,2,1,243847,27,,S
+602,0,3,"Slabenoff, Mr. Petco",male,,0,0,349214,7.8958,,S
+603,0,1,"Harrington, Mr. Charles H",male,,0,0,113796,42.4,,S
+604,0,3,"Torber, Mr. Ernst William",male,44,0,0,364511,8.05,,S
+605,1,1,"Homer, Mr. Harry (""Mr E Haven"")",male,35,0,0,111426,26.55,,C
+606,0,3,"Lindell, Mr. Edvard Bengtsson",male,36,1,0,349910,15.55,,S
+607,0,3,"Karaic, Mr. Milan",male,30,0,0,349246,7.8958,,S
+608,1,1,"Daniel, Mr. Robert Williams",male,27,0,0,113804,30.5,,S
+609,1,2,"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)",female,22,1,2,SC/Paris 2123,41.5792,,C
+610,1,1,"Shutes, Miss. Elizabeth W",female,40,0,0,PC 17582,153.4625,C125,S
+611,0,3,"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)",female,39,1,5,347082,31.275,,S
+612,0,3,"Jardin, Mr. Jose Neto",male,,0,0,SOTON/O.Q. 3101305,7.05,,S
+613,1,3,"Murphy, Miss. Margaret Jane",female,,1,0,367230,15.5,,Q
+614,0,3,"Horgan, Mr. John",male,,0,0,370377,7.75,,Q
+615,0,3,"Brocklebank, Mr. William Alfred",male,35,0,0,364512,8.05,,S
+616,1,2,"Herman, Miss. Alice",female,24,1,2,220845,65,,S
+617,0,3,"Danbom, Mr. Ernst Gilbert",male,34,1,1,347080,14.4,,S
+618,0,3,"Lobb, Mrs. William Arthur (Cordelia K Stanlick)",female,26,1,0,A/5. 3336,16.1,,S
+619,1,2,"Becker, Miss. Marion Louise",female,4,2,1,230136,39,F4,S
+620,0,2,"Gavey, Mr. Lawrence",male,26,0,0,31028,10.5,,S
+621,0,3,"Yasbeck, Mr. Antoni",male,27,1,0,2659,14.4542,,C
+622,1,1,"Kimball, Mr. Edwin Nelson Jr",male,42,1,0,11753,52.5542,D19,S
+623,1,3,"Nakid, Mr. Sahid",male,20,1,1,2653,15.7417,,C
+624,0,3,"Hansen, Mr. Henry Damsgaard",male,21,0,0,350029,7.8542,,S
+625,0,3,"Bowen, Mr. David John ""Dai""",male,21,0,0,54636,16.1,,S
+626,0,1,"Sutton, Mr. Frederick",male,61,0,0,36963,32.3208,D50,S
+627,0,2,"Kirkland, Rev. Charles Leonard",male,57,0,0,219533,12.35,,Q
+628,1,1,"Longley, Miss. Gretchen Fiske",female,21,0,0,13502,77.9583,D9,S
+629,0,3,"Bostandyeff, Mr. Guentcho",male,26,0,0,349224,7.8958,,S
+630,0,3,"O'Connell, Mr. Patrick D",male,,0,0,334912,7.7333,,Q
+631,1,1,"Barkworth, Mr. Algernon Henry Wilson",male,80,0,0,27042,30,A23,S
+632,0,3,"Lundahl, Mr. Johan Svensson",male,51,0,0,347743,7.0542,,S
+633,1,1,"Stahelin-Maeglin, Dr. Max",male,32,0,0,13214,30.5,B50,C
+634,0,1,"Parr, Mr. William Henry Marsh",male,,0,0,112052,0,,S
+635,0,3,"Skoog, Miss. Mabel",female,9,3,2,347088,27.9,,S
+636,1,2,"Davis, Miss. Mary",female,28,0,0,237668,13,,S
+637,0,3,"Leinonen, Mr. Antti Gustaf",male,32,0,0,STON/O 2. 3101292,7.925,,S
+638,0,2,"Collyer, Mr. Harvey",male,31,1,1,C.A. 31921,26.25,,S
+639,0,3,"Panula, Mrs. Juha (Maria Emilia Ojala)",female,41,0,5,3101295,39.6875,,S
+640,0,3,"Thorneycroft, Mr. Percival",male,,1,0,376564,16.1,,S
+641,0,3,"Jensen, Mr. Hans Peder",male,20,0,0,350050,7.8542,,S
+642,1,1,"Sagesser, Mlle. Emma",female,24,0,0,PC 17477,69.3,B35,C
+643,0,3,"Skoog, Miss. Margit Elizabeth",female,2,3,2,347088,27.9,,S
+644,1,3,"Foo, Mr. Choong",male,,0,0,1601,56.4958,,S
+645,1,3,"Baclini, Miss. Eugenie",female,0.75,2,1,2666,19.2583,,C
+646,1,1,"Harper, Mr. Henry Sleeper",male,48,1,0,PC 17572,76.7292,D33,C
+647,0,3,"Cor, Mr. Liudevit",male,19,0,0,349231,7.8958,,S
+648,1,1,"Simonius-Blumer, Col. Oberst Alfons",male,56,0,0,13213,35.5,A26,C
+649,0,3,"Willey, Mr. Edward",male,,0,0,S.O./P.P. 751,7.55,,S
+650,1,3,"Stanley, Miss. Amy Zillah Elsie",female,23,0,0,CA. 2314,7.55,,S
+651,0,3,"Mitkoff, Mr. Mito",male,,0,0,349221,7.8958,,S
+652,1,2,"Doling, Miss. Elsie",female,18,0,1,231919,23,,S
+653,0,3,"Kalvik, Mr. Johannes Halvorsen",male,21,0,0,8475,8.4333,,S
+654,1,3,"O'Leary, Miss. Hanora ""Norah""",female,,0,0,330919,7.8292,,Q
+655,0,3,"Hegarty, Miss. Hanora ""Nora""",female,18,0,0,365226,6.75,,Q
+656,0,2,"Hickman, Mr. Leonard Mark",male,24,2,0,S.O.C. 14879,73.5,,S
+657,0,3,"Radeff, Mr. Alexander",male,,0,0,349223,7.8958,,S
+658,0,3,"Bourke, Mrs. John (Catherine)",female,32,1,1,364849,15.5,,Q
+659,0,2,"Eitemiller, Mr. George Floyd",male,23,0,0,29751,13,,S
+660,0,1,"Newell, Mr. Arthur Webster",male,58,0,2,35273,113.275,D48,C
+661,1,1,"Frauenthal, Dr. Henry William",male,50,2,0,PC 17611,133.65,,S
+662,0,3,"Badt, Mr. Mohamed",male,40,0,0,2623,7.225,,C
+663,0,1,"Colley, Mr. Edward Pomeroy",male,47,0,0,5727,25.5875,E58,S
+664,0,3,"Coleff, Mr. Peju",male,36,0,0,349210,7.4958,,S
+665,1,3,"Lindqvist, Mr. Eino William",male,20,1,0,STON/O 2. 3101285,7.925,,S
+666,0,2,"Hickman, Mr. Lewis",male,32,2,0,S.O.C. 14879,73.5,,S
+667,0,2,"Butler, Mr. Reginald Fenton",male,25,0,0,234686,13,,S
+668,0,3,"Rommetvedt, Mr. Knud Paust",male,,0,0,312993,7.775,,S
+669,0,3,"Cook, Mr. Jacob",male,43,0,0,A/5 3536,8.05,,S
+670,1,1,"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)",female,,1,0,19996,52,C126,S
+671,1,2,"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)",female,40,1,1,29750,39,,S
+672,0,1,"Davidson, Mr. Thornton",male,31,1,0,F.C. 12750,52,B71,S
+673,0,2,"Mitchell, Mr. Henry Michael",male,70,0,0,C.A. 24580,10.5,,S
+674,1,2,"Wilhelms, Mr. Charles",male,31,0,0,244270,13,,S
+675,0,2,"Watson, Mr. Ennis Hastings",male,,0,0,239856,0,,S
+676,0,3,"Edvardsson, Mr. Gustaf Hjalmar",male,18,0,0,349912,7.775,,S
+677,0,3,"Sawyer, Mr. Frederick Charles",male,24.5,0,0,342826,8.05,,S
+678,1,3,"Turja, Miss. Anna Sofia",female,18,0,0,4138,9.8417,,S
+679,0,3,"Goodwin, Mrs. Frederick (Augusta Tyler)",female,43,1,6,CA 2144,46.9,,S
+680,1,1,"Cardeza, Mr. Thomas Drake Martinez",male,36,0,1,PC 17755,512.3292,B51 B53 B55,C
+681,0,3,"Peters, Miss. Katie",female,,0,0,330935,8.1375,,Q
+682,1,1,"Hassab, Mr. Hammad",male,27,0,0,PC 17572,76.7292,D49,C
+683,0,3,"Olsvigen, Mr. Thor Anderson",male,20,0,0,6563,9.225,,S
+684,0,3,"Goodwin, Mr. Charles Edward",male,14,5,2,CA 2144,46.9,,S
+685,0,2,"Brown, Mr. Thomas William Solomon",male,60,1,1,29750,39,,S
+686,0,2,"Laroche, Mr. Joseph Philippe Lemercier",male,25,1,2,SC/Paris 2123,41.5792,,C
+687,0,3,"Panula, Mr. Jaako Arnold",male,14,4,1,3101295,39.6875,,S
+688,0,3,"Dakic, Mr. Branko",male,19,0,0,349228,10.1708,,S
+689,0,3,"Fischer, Mr. Eberhard Thelander",male,18,0,0,350036,7.7958,,S
+690,1,1,"Madill, Miss. Georgette Alexandra",female,15,0,1,24160,211.3375,B5,S
+691,1,1,"Dick, Mr. Albert Adrian",male,31,1,0,17474,57,B20,S
+692,1,3,"Karun, Miss. Manca",female,4,0,1,349256,13.4167,,C
+693,1,3,"Lam, Mr. Ali",male,,0,0,1601,56.4958,,S
+694,0,3,"Saad, Mr. Khalil",male,25,0,0,2672,7.225,,C
+695,0,1,"Weir, Col. John",male,60,0,0,113800,26.55,,S
+696,0,2,"Chapman, Mr. Charles Henry",male,52,0,0,248731,13.5,,S
+697,0,3,"Kelly, Mr. James",male,44,0,0,363592,8.05,,S
+698,1,3,"Mullens, Miss. Katherine ""Katie""",female,,0,0,35852,7.7333,,Q
+699,0,1,"Thayer, Mr. John Borland",male,49,1,1,17421,110.8833,C68,C
+700,0,3,"Humblen, Mr. Adolf Mathias Nicolai Olsen",male,42,0,0,348121,7.65,F G63,S
+701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)",female,18,1,0,PC 17757,227.525,C62 C64,C
+702,1,1,"Silverthorne, Mr. Spencer Victor",male,35,0,0,PC 17475,26.2875,E24,S
+703,0,3,"Barbara, Miss. Saiide",female,18,0,1,2691,14.4542,,C
+704,0,3,"Gallagher, Mr. Martin",male,25,0,0,36864,7.7417,,Q
+705,0,3,"Hansen, Mr. Henrik Juul",male,26,1,0,350025,7.8542,,S
+706,0,2,"Morley, Mr. Henry Samuel (""Mr Henry Marshall"")",male,39,0,0,250655,26,,S
+707,1,2,"Kelly, Mrs. Florence ""Fannie""",female,45,0,0,223596,13.5,,S
+708,1,1,"Calderhead, Mr. Edward Pennington",male,42,0,0,PC 17476,26.2875,E24,S
+709,1,1,"Cleaver, Miss. Alice",female,22,0,0,113781,151.55,,S
+710,1,3,"Moubarek, Master. Halim Gonios (""William George"")",male,,1,1,2661,15.2458,,C
+711,1,1,"Mayne, Mlle. Berthe Antonine (""Mrs de Villiers"")",female,24,0,0,PC 17482,49.5042,C90,C
+712,0,1,"Klaber, Mr. Herman",male,,0,0,113028,26.55,C124,S
+713,1,1,"Taylor, Mr. Elmer Zebley",male,48,1,0,19996,52,C126,S
+714,0,3,"Larsson, Mr. August Viktor",male,29,0,0,7545,9.4833,,S
+715,0,2,"Greenberg, Mr. Samuel",male,52,0,0,250647,13,,S
+716,0,3,"Soholt, Mr. Peter Andreas Lauritz Andersen",male,19,0,0,348124,7.65,F G73,S
+717,1,1,"Endres, Miss. Caroline Louise",female,38,0,0,PC 17757,227.525,C45,C
+718,1,2,"Troutt, Miss. Edwina Celia ""Winnie""",female,27,0,0,34218,10.5,E101,S
+719,0,3,"McEvoy, Mr. Michael",male,,0,0,36568,15.5,,Q
+720,0,3,"Johnson, Mr. Malkolm Joackim",male,33,0,0,347062,7.775,,S
+721,1,2,"Harper, Miss. Annie Jessie ""Nina""",female,6,0,1,248727,33,,S
+722,0,3,"Jensen, Mr. Svend Lauritz",male,17,1,0,350048,7.0542,,S
+723,0,2,"Gillespie, Mr. William Henry",male,34,0,0,12233,13,,S
+724,0,2,"Hodges, Mr. Henry Price",male,50,0,0,250643,13,,S
+725,1,1,"Chambers, Mr. Norman Campbell",male,27,1,0,113806,53.1,E8,S
+726,0,3,"Oreskovic, Mr. Luka",male,20,0,0,315094,8.6625,,S
+727,1,2,"Renouf, Mrs. Peter Henry (Lillian Jefferys)",female,30,3,0,31027,21,,S
+728,1,3,"Mannion, Miss. Margareth",female,,0,0,36866,7.7375,,Q
+729,0,2,"Bryhl, Mr. Kurt Arnold Gottfrid",male,25,1,0,236853,26,,S
+730,0,3,"Ilmakangas, Miss. Pieta Sofia",female,25,1,0,STON/O2. 3101271,7.925,,S
+731,1,1,"Allen, Miss. Elisabeth Walton",female,29,0,0,24160,211.3375,B5,S
+732,0,3,"Hassan, Mr. Houssein G N",male,11,0,0,2699,18.7875,,C
+733,0,2,"Knight, Mr. Robert J",male,,0,0,239855,0,,S
+734,0,2,"Berriman, Mr. William John",male,23,0,0,28425,13,,S
+735,0,2,"Troupiansky, Mr. Moses Aaron",male,23,0,0,233639,13,,S
+736,0,3,"Williams, Mr. Leslie",male,28.5,0,0,54636,16.1,,S
+737,0,3,"Ford, Mrs. Edward (Margaret Ann Watson)",female,48,1,3,W./C. 6608,34.375,,S
+738,1,1,"Lesurer, Mr. Gustave J",male,35,0,0,PC 17755,512.3292,B101,C
+739,0,3,"Ivanoff, Mr. Kanio",male,,0,0,349201,7.8958,,S
+740,0,3,"Nankoff, Mr. Minko",male,,0,0,349218,7.8958,,S
+741,1,1,"Hawksford, Mr. Walter James",male,,0,0,16988,30,D45,S
+742,0,1,"Cavendish, Mr. Tyrell William",male,36,1,0,19877,78.85,C46,S
+743,1,1,"Ryerson, Miss. Susan Parker ""Suzette""",female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C
+744,0,3,"McNamee, Mr. Neal",male,24,1,0,376566,16.1,,S
+745,1,3,"Stranden, Mr. Juho",male,31,0,0,STON/O 2. 3101288,7.925,,S
+746,0,1,"Crosby, Capt. Edward Gifford",male,70,1,1,WE/P 5735,71,B22,S
+747,0,3,"Abbott, Mr. Rossmore Edward",male,16,1,1,C.A. 2673,20.25,,S
+748,1,2,"Sinkkonen, Miss. Anna",female,30,0,0,250648,13,,S
+749,0,1,"Marvin, Mr. Daniel Warner",male,19,1,0,113773,53.1,D30,S
+750,0,3,"Connaghton, Mr. Michael",male,31,0,0,335097,7.75,,Q
+751,1,2,"Wells, Miss. Joan",female,4,1,1,29103,23,,S
+752,1,3,"Moor, Master. Meier",male,6,0,1,392096,12.475,E121,S
+753,0,3,"Vande Velde, Mr. Johannes Joseph",male,33,0,0,345780,9.5,,S
+754,0,3,"Jonkoff, Mr. Lalio",male,23,0,0,349204,7.8958,,S
+755,1,2,"Herman, Mrs. Samuel (Jane Laver)",female,48,1,2,220845,65,,S
+756,1,2,"Hamalainen, Master. Viljo",male,0.67,1,1,250649,14.5,,S
+757,0,3,"Carlsson, Mr. August Sigfrid",male,28,0,0,350042,7.7958,,S
+758,0,2,"Bailey, Mr. Percy Andrew",male,18,0,0,29108,11.5,,S
+759,0,3,"Theobald, Mr. Thomas Leonard",male,34,0,0,363294,8.05,,S
+760,1,1,"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)",female,33,0,0,110152,86.5,B77,S
+761,0,3,"Garfirth, Mr. John",male,,0,0,358585,14.5,,S
+762,0,3,"Nirva, Mr. Iisakki Antino Aijo",male,41,0,0,SOTON/O2 3101272,7.125,,S
+763,1,3,"Barah, Mr. Hanna Assi",male,20,0,0,2663,7.2292,,C
+764,1,1,"Carter, Mrs. William Ernest (Lucile Polk)",female,36,1,2,113760,120,B96 B98,S
+765,0,3,"Eklund, Mr. Hans Linus",male,16,0,0,347074,7.775,,S
+766,1,1,"Hogeboom, Mrs. John C (Anna Andrews)",female,51,1,0,13502,77.9583,D11,S
+767,0,1,"Brewe, Dr. Arthur Jackson",male,,0,0,112379,39.6,,C
+768,0,3,"Mangan, Miss. Mary",female,30.5,0,0,364850,7.75,,Q
+769,0,3,"Moran, Mr. Daniel J",male,,1,0,371110,24.15,,Q
+770,0,3,"Gronnestad, Mr. Daniel Danielsen",male,32,0,0,8471,8.3625,,S
+771,0,3,"Lievens, Mr. Rene Aime",male,24,0,0,345781,9.5,,S
+772,0,3,"Jensen, Mr. Niels Peder",male,48,0,0,350047,7.8542,,S
+773,0,2,"Mack, Mrs. (Mary)",female,57,0,0,S.O./P.P. 3,10.5,E77,S
+774,0,3,"Elias, Mr. Dibo",male,,0,0,2674,7.225,,C
+775,1,2,"Hocking, Mrs. Elizabeth (Eliza Needs)",female,54,1,3,29105,23,,S
+776,0,3,"Myhrman, Mr. Pehr Fabian Oliver Malkolm",male,18,0,0,347078,7.75,,S
+777,0,3,"Tobin, Mr. Roger",male,,0,0,383121,7.75,F38,Q
+778,1,3,"Emanuel, Miss. Virginia Ethel",female,5,0,0,364516,12.475,,S
+779,0,3,"Kilgannon, Mr. Thomas J",male,,0,0,36865,7.7375,,Q
+780,1,1,"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)",female,43,0,1,24160,211.3375,B3,S
+781,1,3,"Ayoub, Miss. Banoura",female,13,0,0,2687,7.2292,,C
+782,1,1,"Dick, Mrs. Albert Adrian (Vera Gillespie)",female,17,1,0,17474,57,B20,S
+783,0,1,"Long, Mr. Milton Clyde",male,29,0,0,113501,30,D6,S
+784,0,3,"Johnston, Mr. Andrew G",male,,1,2,W./C. 6607,23.45,,S
+785,0,3,"Ali, Mr. William",male,25,0,0,SOTON/O.Q. 3101312,7.05,,S
+786,0,3,"Harmer, Mr. Abraham (David Lishin)",male,25,0,0,374887,7.25,,S
+787,1,3,"Sjoblom, Miss. Anna Sofia",female,18,0,0,3101265,7.4958,,S
+788,0,3,"Rice, Master. George Hugh",male,8,4,1,382652,29.125,,Q
+789,1,3,"Dean, Master. Bertram Vere",male,1,1,2,C.A. 2315,20.575,,S
+790,0,1,"Guggenheim, Mr. Benjamin",male,46,0,0,PC 17593,79.2,B82 B84,C
+791,0,3,"Keane, Mr. Andrew ""Andy""",male,,0,0,12460,7.75,,Q
+792,0,2,"Gaskell, Mr. Alfred",male,16,0,0,239865,26,,S
+793,0,3,"Sage, Miss. Stella Anna",female,,8,2,CA. 2343,69.55,,S
+794,0,1,"Hoyt, Mr. William Fisher",male,,0,0,PC 17600,30.6958,,C
+795,0,3,"Dantcheff, Mr. Ristiu",male,25,0,0,349203,7.8958,,S
+796,0,2,"Otter, Mr. Richard",male,39,0,0,28213,13,,S
+797,1,1,"Leader, Dr. Alice (Farnham)",female,49,0,0,17465,25.9292,D17,S
+798,1,3,"Osman, Mrs. Mara",female,31,0,0,349244,8.6833,,S
+799,0,3,"Ibrahim Shawah, Mr. Yousseff",male,30,0,0,2685,7.2292,,C
+800,0,3,"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)",female,30,1,1,345773,24.15,,S
+801,0,2,"Ponesell, Mr. Martin",male,34,0,0,250647,13,,S
+802,1,2,"Collyer, Mrs. Harvey (Charlotte Annie Tate)",female,31,1,1,C.A. 31921,26.25,,S
+803,1,1,"Carter, Master. William Thornton II",male,11,1,2,113760,120,B96 B98,S
+804,1,3,"Thomas, Master. Assad Alexander",male,0.42,0,1,2625,8.5167,,C
+805,1,3,"Hedman, Mr. Oskar Arvid",male,27,0,0,347089,6.975,,S
+806,0,3,"Johansson, Mr. Karl Johan",male,31,0,0,347063,7.775,,S
+807,0,1,"Andrews, Mr. Thomas Jr",male,39,0,0,112050,0,A36,S
+808,0,3,"Pettersson, Miss. Ellen Natalia",female,18,0,0,347087,7.775,,S
+809,0,2,"Meyer, Mr. August",male,39,0,0,248723,13,,S
+810,1,1,"Chambers, Mrs. Norman Campbell (Bertha Griggs)",female,33,1,0,113806,53.1,E8,S
+811,0,3,"Alexander, Mr. William",male,26,0,0,3474,7.8875,,S
+812,0,3,"Lester, Mr. James",male,39,0,0,A/4 48871,24.15,,S
+813,0,2,"Slemen, Mr. Richard James",male,35,0,0,28206,10.5,,S
+814,0,3,"Andersson, Miss. Ebba Iris Alfrida",female,6,4,2,347082,31.275,,S
+815,0,3,"Tomlin, Mr. Ernest Portage",male,30.5,0,0,364499,8.05,,S
+816,0,1,"Fry, Mr. Richard",male,,0,0,112058,0,B102,S
+817,0,3,"Heininen, Miss. Wendla Maria",female,23,0,0,STON/O2. 3101290,7.925,,S
+818,0,2,"Mallet, Mr. Albert",male,31,1,1,S.C./PARIS 2079,37.0042,,C
+819,0,3,"Holm, Mr. John Fredrik Alexander",male,43,0,0,C 7075,6.45,,S
+820,0,3,"Skoog, Master. Karl Thorsten",male,10,3,2,347088,27.9,,S
+821,1,1,"Hays, Mrs. Charles Melville (Clara Jennings Gregg)",female,52,1,1,12749,93.5,B69,S
+822,1,3,"Lulic, Mr. Nikola",male,27,0,0,315098,8.6625,,S
+823,0,1,"Reuchlin, Jonkheer. John George",male,38,0,0,19972,0,,S
+824,1,3,"Moor, Mrs. (Beila)",female,27,0,1,392096,12.475,E121,S
+825,0,3,"Panula, Master. Urho Abraham",male,2,4,1,3101295,39.6875,,S
+826,0,3,"Flynn, Mr. John",male,,0,0,368323,6.95,,Q
+827,0,3,"Lam, Mr. Len",male,,0,0,1601,56.4958,,S
+828,1,2,"Mallet, Master. Andre",male,1,0,2,S.C./PARIS 2079,37.0042,,C
+829,1,3,"McCormack, Mr. Thomas Joseph",male,,0,0,367228,7.75,,Q
+830,1,1,"Stone, Mrs. George Nelson (Martha Evelyn)",female,62,0,0,113572,80,B28,
+831,1,3,"Yasbeck, Mrs. Antoni (Selini Alexander)",female,15,1,0,2659,14.4542,,C
+832,1,2,"Richards, Master. George Sibley",male,0.83,1,1,29106,18.75,,S
+833,0,3,"Saad, Mr. Amin",male,,0,0,2671,7.2292,,C
+834,0,3,"Augustsson, Mr. Albert",male,23,0,0,347468,7.8542,,S
+835,0,3,"Allum, Mr. Owen George",male,18,0,0,2223,8.3,,S
+836,1,1,"Compton, Miss. Sara Rebecca",female,39,1,1,PC 17756,83.1583,E49,C
+837,0,3,"Pasic, Mr. Jakob",male,21,0,0,315097,8.6625,,S
+838,0,3,"Sirota, Mr. Maurice",male,,0,0,392092,8.05,,S
+839,1,3,"Chip, Mr. Chang",male,32,0,0,1601,56.4958,,S
+840,1,1,"Marechal, Mr. Pierre",male,,0,0,11774,29.7,C47,C
+841,0,3,"Alhomaki, Mr. Ilmari Rudolf",male,20,0,0,SOTON/O2 3101287,7.925,,S
+842,0,2,"Mudd, Mr. Thomas Charles",male,16,0,0,S.O./P.P. 3,10.5,,S
+843,1,1,"Serepeca, Miss. Augusta",female,30,0,0,113798,31,,C
+844,0,3,"Lemberopolous, Mr. Peter L",male,34.5,0,0,2683,6.4375,,C
+845,0,3,"Culumovic, Mr. Jeso",male,17,0,0,315090,8.6625,,S
+846,0,3,"Abbing, Mr. Anthony",male,42,0,0,C.A. 5547,7.55,,S
+847,0,3,"Sage, Mr. Douglas Bullen",male,,8,2,CA. 2343,69.55,,S
+848,0,3,"Markoff, Mr. Marin",male,35,0,0,349213,7.8958,,C
+849,0,2,"Harper, Rev. John",male,28,0,1,248727,33,,S
+850,1,1,"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)",female,,1,0,17453,89.1042,C92,C
+851,0,3,"Andersson, Master. Sigvard Harald Elias",male,4,4,2,347082,31.275,,S
+852,0,3,"Svensson, Mr. Johan",male,74,0,0,347060,7.775,,S
+853,0,3,"Boulos, Miss. Nourelain",female,9,1,1,2678,15.2458,,C
+854,1,1,"Lines, Miss. Mary Conover",female,16,0,1,PC 17592,39.4,D28,S
+855,0,2,"Carter, Mrs. Ernest Courtenay (Lilian Hughes)",female,44,1,0,244252,26,,S
+856,1,3,"Aks, Mrs. Sam (Leah Rosen)",female,18,0,1,392091,9.35,,S
+857,1,1,"Wick, Mrs. George Dennick (Mary Hitchcock)",female,45,1,1,36928,164.8667,,S
+858,1,1,"Daly, Mr. Peter Denis ",male,51,0,0,113055,26.55,E17,S
+859,1,3,"Baclini, Mrs. Solomon (Latifa Qurban)",female,24,0,3,2666,19.2583,,C
+860,0,3,"Razi, Mr. Raihed",male,,0,0,2629,7.2292,,C
+861,0,3,"Hansen, Mr. Claus Peter",male,41,2,0,350026,14.1083,,S
+862,0,2,"Giles, Mr. Frederick Edward",male,21,1,0,28134,11.5,,S
+863,1,1,"Swift, Mrs. Frederick Joel (Margaret Welles Barron)",female,48,0,0,17466,25.9292,D17,S
+864,0,3,"Sage, Miss. Dorothy Edith ""Dolly""",female,,8,2,CA. 2343,69.55,,S
+865,0,2,"Gill, Mr. John William",male,24,0,0,233866,13,,S
+866,1,2,"Bystrom, Mrs. (Karolina)",female,42,0,0,236852,13,,S
+867,1,2,"Duran y More, Miss. Asuncion",female,27,1,0,SC/PARIS 2149,13.8583,,C
+868,0,1,"Roebling, Mr. Washington Augustus II",male,31,0,0,PC 17590,50.4958,A24,S
+869,0,3,"van Melkebeke, Mr. Philemon",male,,0,0,345777,9.5,,S
+870,1,3,"Johnson, Master. Harold Theodor",male,4,1,1,347742,11.1333,,S
+871,0,3,"Balkic, Mr. Cerin",male,26,0,0,349248,7.8958,,S
+872,1,1,"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)",female,47,1,1,11751,52.5542,D35,S
+873,0,1,"Carlsson, Mr. Frans Olof",male,33,0,0,695,5,B51 B53 B55,S
+874,0,3,"Vander Cruyssen, Mr. Victor",male,47,0,0,345765,9,,S
+875,1,2,"Abelson, Mrs. Samuel (Hannah Wizosky)",female,28,1,0,P/PP 3381,24,,C
+876,1,3,"Najib, Miss. Adele Kiamie ""Jane""",female,15,0,0,2667,7.225,,C
+877,0,3,"Gustafsson, Mr. Alfred Ossian",male,20,0,0,7534,9.8458,,S
+878,0,3,"Petroff, Mr. Nedelio",male,19,0,0,349212,7.8958,,S
+879,0,3,"Laleff, Mr. Kristo",male,,0,0,349217,7.8958,,S
+880,1,1,"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)",female,56,0,1,11767,83.1583,C50,C
+881,1,2,"Shelley, Mrs. William (Imanita Parrish Hall)",female,25,0,1,230433,26,,S
+882,0,3,"Markun, Mr. Johann",male,33,0,0,349257,7.8958,,S
+883,0,3,"Dahlberg, Miss. Gerda Ulrika",female,22,0,0,7552,10.5167,,S
+884,0,2,"Banfield, Mr. Frederick James",male,28,0,0,C.A./SOTON 34068,10.5,,S
+885,0,3,"Sutehall, Mr. Henry Jr",male,25,0,0,SOTON/OQ 392076,7.05,,S
+886,0,3,"Rice, Mrs. William (Margaret Norton)",female,39,0,5,382652,29.125,,Q
+887,0,2,"Montvila, Rev. Juozas",male,27,0,0,211536,13,,S
+888,1,1,"Graham, Miss. Margaret Edith",female,19,0,0,112053,30,B42,S
+889,0,3,"Johnston, Miss. Catherine Helen ""Carrie""",female,,1,2,W./C. 6607,23.45,,S
+890,1,1,"Behr, Mr. Karl Howell",male,26,0,0,111369,30,C148,C
+891,0,3,"Dooley, Mr. Patrick",male,32,0,0,370376,7.75,,Q
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/data_handler/__init__.py b/kaggle-titanic-engine/marvin_titanic_engine/data_handler/__init__.py
new file mode 100644
index 0000000..677dd17
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/data_handler/__init__.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+from .acquisitor_and_cleaner import AcquisitorAndCleaner
+from .training_preparator import TrainingPreparator
\ No newline at end of file
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/data_handler/acquisitor_and_cleaner.py b/kaggle-titanic-engine/marvin_titanic_engine/data_handler/acquisitor_and_cleaner.py
new file mode 100644
index 0000000..0839ecf
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/data_handler/acquisitor_and_cleaner.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+"""AcquisitorAndCleaner engine action.
+
+Use this module to add the project main code.
+"""
+
+import pandas as pd
+
+from .._compatibility import six
+from .._logging import get_logger
+from marvin_python_toolbox.common.data import MarvinData
+import pandas as pd
+
+from marvin_python_toolbox.engine_base import EngineBaseDataHandler
+
+__all__ = ['AcquisitorAndCleaner']
+
+
+logger = get_logger('acquisitor_and_cleaner')
+
+
+class AcquisitorAndCleaner(EngineBaseDataHandler):
+
+    def __init__(self, **kwargs):
+        super(AcquisitorAndCleaner, self).__init__(**kwargs)
+
+    def execute(self, params, **kwargs):
+
+        train_df = pd.read_csv(MarvinData.download_file("https://s3.amazonaws.com/marvin-engines-data/titanic/train.csv"))
+        test_df = pd.read_csv(MarvinData.download_file("https://s3.amazonaws.com/marvin-engines-data/titanic/test.csv"))
+
+        print ("{} samples to train with {} features...".format(train_df.shape[0], train_df.shape[1]))
+        print ("{} samples to test...".format(test_df.shape[0]))
+
+        self.marvin_initial_dataset = {
+            'train': train_df,
+            'test': test_df
+        }
+
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/data_handler/training_preparator.py b/kaggle-titanic-engine/marvin_titanic_engine/data_handler/training_preparator.py
new file mode 100644
index 0000000..6b0d639
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/data_handler/training_preparator.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+"""TrainingPreparator engine action.
+
+Use this module to add the project main code.
+"""
+from .._compatibility import six
+from .._logging import get_logger
+from sklearn.model_selection import StratifiedShuffleSplit
+
+from marvin_python_toolbox.engine_base import EngineBaseDataHandler
+
+__all__ = ['TrainingPreparator']
+
+
+logger = get_logger('training_preparator')
+
+
+class TrainingPreparator(EngineBaseDataHandler):
+
+    def __init__(self, **kwargs):
+        super(TrainingPreparator, self).__init__(**kwargs)
+
+    def execute(self, params, **kwargs):
+
+        train_no_na = self.marvin_initial_dataset['train'][params["pred_cols"] + [params["dep_var"]]].dropna()
+
+        print("Length: {}".format(len(train_no_na)))
+
+        # Feature Engineering
+        data_X = train_no_na[params["pred_cols"]]
+        data_X.loc[:, 'Sex'] = data_X.loc[:, 'Sex'].map({'male': 1, 'female': 0})
+        data_y = train_no_na[params["dep_var"]]
+
+        # Prepare for Stratified Shuffle Split
+        sss = StratifiedShuffleSplit(n_splits=5, test_size=.6, random_state=0)
+        sss.get_n_splits(data_X, data_y)
+
+        # Get Test Dataset
+        test_no_na = self.marvin_initial_dataset['test'][params["pred_cols"]].dropna()
+
+        print("Length: {}".format(len(test_no_na)))
+
+        # Feature Engineering
+        test_X = test_no_na[params["pred_cols"]]
+        test_X.loc[:, 'Sex'] = test_X.loc[:, 'Sex'].map({'male': 1, 'female': 0})
+
+        self.marvin_dataset = {
+            'X_train': data_X,
+            'y_train': data_y,
+            'X_test': test_X,
+            'sss': sss
+        }
+
+        print ("Preparation is Done!!!!")
+
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/prediction/__init__.py b/kaggle-titanic-engine/marvin_titanic_engine/prediction/__init__.py
new file mode 100644
index 0000000..e9b3c7c
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/prediction/__init__.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+from .prediction_preparator import PredictionPreparator
+from .predictor import Predictor
+from .feedback import Feedback
\ No newline at end of file
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/prediction/feedback.py b/kaggle-titanic-engine/marvin_titanic_engine/prediction/feedback.py
new file mode 100644
index 0000000..ca42364
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/prediction/feedback.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+# Copyright [2017] [B2W Digital]
+#
+# Licensed 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.
+
+"""Feedback engine action.
+
+Use this module to add the project main code.
+"""
+
+from .._compatibility import six
+from .._logging import get_logger
+
+from marvin_python_toolbox.engine_base import EngineBasePrediction
+
+__all__ = ['Feedback']
+
+
+logger = get_logger('feedback')
+
+
+class Feedback(EngineBasePrediction):
+
+    def __init__(self, **kwargs):
+        super(Feedback, self).__init__(**kwargs)
+
+    def execute(self, input_message, params, **kwargs):
+        """
+        Receive feedback message, user can manipulate this message for any use.
+        Return "Done" to signal that the message is received and processed.
+        """
+        return {"message": "Done"}
\ No newline at end of file
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/prediction/prediction_preparator.py b/kaggle-titanic-engine/marvin_titanic_engine/prediction/prediction_preparator.py
new file mode 100644
index 0000000..11a917f
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/prediction/prediction_preparator.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+"""PredictionPreparator engine action.
+
+Use this module to add the project main code.
+"""
+
+from .._compatibility import six
+from .._logging import get_logger
+
+from marvin_python_toolbox.engine_base import EngineBasePrediction
+
+__all__ = ['PredictionPreparator']
+
+
+logger = get_logger('prediction_preparator')
+
+
+class PredictionPreparator(EngineBasePrediction):
+
+    def __init__(self, **kwargs):
+        super(PredictionPreparator, self).__init__(**kwargs)
+
+    def execute(self, input_message, params, **kwargs):
+        # Given the input: input_message = {"age": 50, "class": 3, "sex": 0}
+        # Transform the message into a correctly ordered list for the model
+
+        key_order = {"Age": 0, "Pclass": 1, "Sex": 2, "Fare": 3}
+        input_message = [input_message[i] for i in sorted(input_message, key=key_order.__getitem__)]
+
+        return input_message
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/prediction/predictor.py b/kaggle-titanic-engine/marvin_titanic_engine/prediction/predictor.py
new file mode 100644
index 0000000..410f7cc
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/prediction/predictor.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+"""Predictor engine action.
+
+Use this module to add the project main code.
+"""
+
+from .._compatibility import six
+from .._logging import get_logger
+
+from marvin_python_toolbox.engine_base import EngineBasePrediction
+
+__all__ = ['Predictor']
+
+
+logger = get_logger('predictor')
+
+
+class Predictor(EngineBasePrediction):
+
+    def __init__(self, **kwargs):
+        super(Predictor, self).__init__(**kwargs)
+
+    def execute(self, input_message, params, **kwargs):
+        final_prediction = {
+            "prediction_rf": self.marvin_model['rf'].predict([input_message])[0],
+            "prediction_svm": self.marvin_model['svm'].predict([input_message])[0]
+        }
+
+        print(final_prediction)
+
+        return final_prediction
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/training/__init__.py b/kaggle-titanic-engine/marvin_titanic_engine/training/__init__.py
new file mode 100644
index 0000000..e1723b7
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/training/__init__.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+from .metrics_evaluator import MetricsEvaluator
+from .trainer import Trainer
\ No newline at end of file
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/training/metrics_evaluator.py b/kaggle-titanic-engine/marvin_titanic_engine/training/metrics_evaluator.py
new file mode 100644
index 0000000..4448d01
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/training/metrics_evaluator.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+"""MetricsEvaluator engine action.
+
+Use this module to add the project main code.
+"""
+
+from .._compatibility import six 
+from .._logging import get_logger
+from sklearn import metrics
+from six import iteritems
+import numpy as np
+
+from marvin_python_toolbox.engine_base import EngineBaseTraining
+
+__all__ = ['MetricsEvaluator']
+
+
+logger = get_logger('metrics_evaluator')
+
+
+class MetricsEvaluator(EngineBaseTraining):
+
+    def __init__(self, **kwargs):
+        super(MetricsEvaluator, self).__init__(**kwargs)
+
+    def execute(self, params, **kwargs):
+
+        all_metrics = {}
+
+        _model = self.marvin_model
+        for model_type, fitted_model in iteritems(_model):
+
+            y_predicted = fitted_model.predict(self.marvin_dataset['X_train'])
+
+            all_metrics[model_type] = {}
+            all_metrics[model_type]["report"] = metrics.classification_report(y_predicted, self.marvin_dataset['y_train'])
+            all_metrics[model_type]["confusion_matrix"] = metrics.confusion_matrix(y_predicted, self.marvin_dataset['y_train']).tolist()
+
+            # Print the classification report of `y_test` and `predicted`
+            print("Classification Report:\n")
+            print(all_metrics[model_type]["report"])
+
+            # Print the confusion matrix
+            print("Confusion Matrix:\n")
+            print(all_metrics[model_type]["confusion_matrix"])
+            print("\n\n")
+
+        importances = _model["rf"].best_estimator_.feature_importances_
+        indices = np.argsort(importances)[::-1]
+
+        # Print the feature ranking
+        print("Feature ranking:")
+
+        all_metrics["feature_ranking"] = []
+        for f in range(self.marvin_dataset['X_train'].shape[1]):
+            all_metrics["feature_ranking"].append((f + 1, params["pred_cols"][indices[f]], importances[indices[f]]))
+            print("%d. feature %s (%f)" % all_metrics["feature_ranking"][f])
+
+        self.marvin_metrics = all_metrics
diff --git a/kaggle-titanic-engine/marvin_titanic_engine/training/trainer.py b/kaggle-titanic-engine/marvin_titanic_engine/training/trainer.py
new file mode 100644
index 0000000..238cb7e
--- /dev/null
+++ b/kaggle-titanic-engine/marvin_titanic_engine/training/trainer.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+"""Trainer engine action.
+
+Use this module to add the project main code.
+"""
+from .._compatibility import six
+from .._logging import get_logger
+from sklearn import svm
+from sklearn.model_selection import GridSearchCV
+from sklearn.ensemble import RandomForestClassifier
+from sklearn.preprocessing import StandardScaler, scale
+from sklearn.linear_model import LogisticRegression
+from marvin_python_toolbox.engine_base import EngineBaseTraining
+
+__all__ = ['Trainer']
+
+
+logger = get_logger('trainer')
+
+
+class Trainer(EngineBaseTraining):
+
+    def __init__(self, **kwargs):
+        super(Trainer, self).__init__(**kwargs)
+
+    def execute(self, params, **kwargs):
+
+        print("\n\nStarting grid search using SVM!")
+
+        # Create a classifier with the parameter candidates
+        svm_grid = GridSearchCV(estimator=svm.SVC(), param_grid=params["svm"], cv=self.marvin_dataset["sss"], n_jobs=-1)
+
+        # Train the classifier on training data
+        svm_grid.fit(
+            self.marvin_dataset['X_train'],
+            self.marvin_dataset['y_train']
+        )
+
+        print("Model Type: SVM\n{}".format(svm_grid.best_estimator_.get_params()))
+        print("Accuracy Score: {}%".format(round(svm_grid.best_score_, 4)))
+
+        print("\n\nStarting grid search using RandomForestClassifier!")
+
+        # run grid search
+        rf_grid = GridSearchCV(estimator=RandomForestClassifier(), param_grid=params["rf"], cv=self.marvin_dataset["sss"])
+        rf_grid.fit(
+            self.marvin_dataset['X_train'],
+            self.marvin_dataset['y_train']
+        )
+
+        print("Model Type: RF\n{}".format(rf_grid.best_estimator_.get_params()))
+        print("Accuracy Score: {}%".format(round(rf_grid.best_score_, 4)))
+
+        self.marvin_model = {
+            'svm': svm_grid,
+            'rf': rf_grid
+        }
+
diff --git a/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/Titanic_Kaggle_Sample-checkpoint.ipynb b/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/Titanic_Kaggle_Sample-checkpoint.ipynb
new file mode 100644
index 0000000..1948463
--- /dev/null
+++ b/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/Titanic_Kaggle_Sample-checkpoint.ipynb
@@ -0,0 +1,447 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Documentation"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Sample Notebook To Build a Model and Make Predictions with the Titanic Dataset from Kaggle"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Table of Contents\n",
+    "\n",
+    "0. [Params](#Params)\n",
+    "1. [Acquisitor and Cleaner](#Acquisitor-and-Cleaner)\n",
+    "2. [Training Preparator](#Training-Preparator)\n",
+    "3. [Trainer](#Trainer)\n",
+    "4. [Metrics Evaluator](#Metrics-Evaluator)\n",
+    "5. [Prediction Preparator](#Prediction-Preparator)\n",
+    "6. [Predictor](#Predictor)\n",
+    "7. [Feedback](#Feedback)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Params"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# puts this params in engine.params file to be used by dryrun and executor as default params\n",
+    "# use a full grid over all parameters\n",
+    "params = {\n",
+    "    \"svm\": [\n",
+    "        {\"C\": [1, 10, 100], \"gamma\": [0.01, 0.001], \"kernel\": [\"linear\"]},\n",
+    "        {\"C\": [1, 10, 100],\"gamma\": [0.01, 0.001],\"kernel\": [\"rbf\"]}\n",
+    "    ],\n",
+    "    \"rf\": {\n",
+    "        \"max_depth\": [3],\n",
+    "        \"random_state\": [0],\n",
+    "        \"min_samples_split\": [2],\n",
+    "        \"min_samples_leaf\": [1],\n",
+    "        \"n_estimators\": [20],\n",
+    "        \"bootstrap\": [True, False],\n",
+    "        \"criterion\": [\"gini\", \"entropy\"]\n",
+    "    },\n",
+    "    \"pred_cols\": [\"Age\", \"Pclass\", \"Sex\", \"Fare\"],\n",
+    "    \"dep_var\": \"Survived\"\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "marvin_cell": "acquisitor"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "891 samples to train with 12 features...\n",
+      "418 samples to test...\n"
+     ]
+    }
+   ],
+   "source": [
+    "from marvin_python_toolbox.common.data import MarvinData\n",
+    "import pandas as pd\n",
+    "\n",
+    "train_df = pd.read_csv(MarvinData.download_file(\"https://s3.amazonaws.com/marvin-engines-data/titanic/train.csv\"))\n",
+    "test_df = pd.read_csv(MarvinData.download_file(\"https://s3.amazonaws.com/marvin-engines-data/titanic/test.csv\"))\n",
+    "\n",
+    "print (\"{} samples to train with {} features...\".format(train_df.shape[0], train_df.shape[1]))\n",
+    "print (\"{} samples to test...\".format(test_df.shape[0]))\n",
+    "\n",
+    "marvin_initial_dataset = {\n",
+    "    'train': train_df,\n",
+    "    'test': test_df\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Training Preparator"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "marvin_cell": "tpreparator"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Length: 714\n",
+      "Preparation is Done!!!!\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn.model_selection import StratifiedShuffleSplit, train_test_split, cross_val_score, GridSearchCV\n",
+    "\n",
+    "train_no_na = marvin_initial_dataset['train'][params[\"pred_cols\"] + [params[\"dep_var\"]]].dropna()\n",
+    "\n",
+    "print(\"Length: {}\".format(len(train_no_na)))\n",
+    "\n",
+    "# Feature Engineering\n",
+    "data_X = train_no_na[params[\"pred_cols\"]]\n",
+    "data_X.loc[:, 'Sex'] = data_X.loc[:, 'Sex'].map({'male': 1, 'female': 0})\n",
+    "data_y = train_no_na[params[\"dep_var\"]]\n",
+    "\n",
+    "# Prepare for Stratified Shuffle Split\n",
+    "sss = StratifiedShuffleSplit(n_splits=5, test_size=.6, random_state=0)\n",
+    "sss.get_n_splits(data_X, data_y)\n",
+    "\n",
+    "for train_index, test_index in sss.split(data_X, data_y):\n",
+    "    X_train, X_test = data_X.iloc[train_index], data_X.iloc[test_index]\n",
+    "    y_train, y_test = data_y.iloc[train_index], data_y.iloc[test_index]\n",
+    "\n",
+    "marvin_dataset = {\n",
+    "    'X_train': X_train,\n",
+    "    'y_train': y_train,\n",
+    "    'X_test': X_test,\n",
+    "    'y_test': y_test,\n",
+    "    'sss': sss\n",
+    "}\n",
+    "\n",
+    "print (\"Preparation is Done!!!!\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Trainer"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "marvin_cell": "trainer"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "\n",
+      "Starting grid search using SVM!\n",
+      "Model Type: SVM\n",
+      "{'kernel': 'linear', 'C': 1, 'verbose': False, 'probability': False, 'degree': 3, 'shrinking': True, 'max_iter': -1, 'decision_function_shape': None, 'random_state': None, 'tol': 0.001, 'cache_size': 200, 'coef0': 0.0, 'gamma': 0.01, 'class_weight': None}\n",
+      "Accuracy Score: 0.7825%\n",
+      "\n",
+      "\n",
+      "Starting grid search using RandomForestClassifier!\n",
+      "Model Type: RF\n",
+      "{'warm_start': False, 'oob_score': False, 'n_jobs': 1, 'verbose': 0, 'max_leaf_nodes': None, 'bootstrap': False, 'min_samples_leaf': 1, 'n_estimators': 20, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'criterion': 'entropy', 'random_state': 0, 'min_impurity_split': 1e-07, 'max_features': 'auto', 'max_depth': 3, 'class_weight': None}\n",
+      "Accuracy Score: 0.7754%\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn import svm, neighbors, tree\n",
+    "from sklearn.model_selection import StratifiedShuffleSplit, train_test_split, cross_val_score, GridSearchCV\n",
+    "from sklearn.ensemble import RandomForestClassifier\n",
+    "from sklearn.preprocessing import StandardScaler, scale\n",
+    "from sklearn.linear_model import LogisticRegression\n",
+    "\n",
+    "print(\"\\n\\nStarting grid search using SVM!\")\n",
+    "\n",
+    "# Create a classifier with the parameter candidates\n",
+    "svm_grid = GridSearchCV(estimator=svm.SVC(), param_grid=params[\"svm\"], n_jobs=-1)\n",
+    "\n",
+    "# Train the classifier on training data\n",
+    "svm_grid.fit(\n",
+    "    marvin_dataset['X_train'],\n",
+    "    marvin_dataset['y_train']\n",
+    ")\n",
+    "\n",
+    "print(\"Model Type: SVM\\n{}\".format(svm_grid.best_estimator_.get_params()))\n",
+    "print(\"Accuracy Score: {}%\".format(round(svm_grid.best_score_,4)))\n",
+    "\n",
+    "print(\"\\n\\nStarting grid search using RandomForestClassifier!\")\n",
+    "\n",
+    "# run grid search\n",
+    "rf_grid = GridSearchCV(estimator=RandomForestClassifier(), param_grid=params[\"rf\"])\n",
+    "rf_grid.fit(\n",
+    "    marvin_dataset['X_train'],\n",
+    "    marvin_dataset['y_train']\n",
+    ")\n",
+    "\n",
+    "print(\"Model Type: RF\\n{}\".format(rf_grid.best_estimator_.get_params()))\n",
+    "print(\"Accuracy Score: {}%\".format(round(rf_grid.best_score_,4)))\n",
+    "\n",
+    "marvin_model = {\n",
+    "    'svm': svm_grid,\n",
+    "    'rf': rf_grid\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Metrics Evaluation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "marvin_cell": "evaluator"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Classification Report:\n",
+      "\n",
+      "             precision    recall  f1-score   support\n",
+      "\n",
+      "          0       0.82      0.81      0.81       257\n",
+      "          1       0.72      0.73      0.72       172\n",
+      "\n",
+      "avg / total       0.78      0.78      0.78       429\n",
+      "\n",
+      "Confusion Matrix:\n",
+      "\n",
+      "[[208  49]\n",
+      " [ 47 125]]\n",
+      "\n",
+      "\n",
+      "\n",
+      "Classification Report:\n",
+      "\n",
+      "             precision    recall  f1-score   support\n",
+      "\n",
+      "          0       0.83      0.80      0.82       264\n",
+      "          1       0.70      0.74      0.72       165\n",
+      "\n",
+      "avg / total       0.78      0.78      0.78       429\n",
+      "\n",
+      "Confusion Matrix:\n",
+      "\n",
+      "[[212  52]\n",
+      " [ 43 122]]\n",
+      "\n",
+      "\n",
+      "\n",
+      "Feature ranking:\n",
+      "1. feature Sex (0.492621)\n",
+      "2. feature Fare (0.256981)\n",
+      "3. feature Pclass (0.141660)\n",
+      "4. feature Age (0.108738)\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn import metrics\n",
+    "import numpy as np\n",
+    "\n",
+    "all_metrics = {}\n",
+    "\n",
+    "_model = marvin_model\n",
+    "for model_type, fitted_model in _model.iteritems():\n",
+    "    \n",
+    "    y_predicted = fitted_model.predict(marvin_dataset['X_test'])\n",
+    "    \n",
+    "    all_metrics[model_type] = {}\n",
+    "    all_metrics[model_type][\"report\"] = metrics.classification_report(y_predicted, marvin_dataset['y_test'])\n",
+    "    all_metrics[model_type][\"confusion_matrix\"] = metrics.confusion_matrix(y_predicted, marvin_dataset['y_test'])                                                               \n",
+    "    \n",
+    "    # Print the classification report of `y_test` and `predicted`\n",
+    "    print(\"Classification Report:\\n\")\n",
+    "    print(all_metrics[model_type][\"report\"])\n",
+    "    \n",
+    "    # Print the confusion matrix\n",
+    "    print(\"Confusion Matrix:\\n\")\n",
+    "    print(all_metrics[model_type][\"confusion_matrix\"])\n",
+    "    print(\"\\n\\n\")\n",
+    "\n",
+    "importances = _model[\"rf\"].best_estimator_.feature_importances_\n",
+    "indices = np.argsort(importances)[::-1]\n",
+    "\n",
+    "# Print the feature ranking\n",
+    "print(\"Feature ranking:\")\n",
+    "\n",
+    "all_metrics[\"feature_ranking\"] = []\n",
+    "for f in range(marvin_dataset['X_train'].shape[1]):\n",
+    "    all_metrics[\"feature_ranking\"].append((f + 1, params[\"pred_cols\"][indices[f]], importances[indices[f]]))\n",
+    "    print(\"%d. feature %s (%f)\" % all_metrics[\"feature_ranking\"][f])\n",
+    "\n",
+    "marvin_metrics = all_metrics"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<matplotlib.figure.Figure at 0x7f6530cd9e90>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "import matplotlib.pyplot as plt\n",
+    "%matplotlib inline\n",
+    "\n",
+    "# Plot the feature importances of the forest\n",
+    "plt.figure(figsize=(10,5))\n",
+    "plt.title(\"Feature importances\")\n",
+    "plt.bar(range(X_train.shape[1]), importances[indices], color=\"r\",  align=\"center\")\n",
+    "\n",
+    "stats_order = [params[\"pred_cols\"][x] for x in indices]\n",
+    "\n",
+    "plt.xticks(range(marvin_dataset['X_train'].shape[1]), stats_order, rotation='vertical')\n",
+    "plt.xlim([-1, marvin_dataset['X_train'].shape[1]])\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Prediction Preparator"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# put this values in engine.messages to be used as dryrun samples\n",
+    "# age, class, sex\n",
+    "# reminder: 'male': 1, 'female': 0\n",
+    "input_message = {\"age\": 50, \"class\": 3, \"sex\": 0, \"fare\": 5}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {
+    "marvin_cell": "ppreparator"
+   },
+   "outputs": [],
+   "source": [
+    "# Given the input: input_message = {\"age\": 50, \"class\": 3, \"sex\": 0}\n",
+    "# Transform the message into a correctly ordered list for the model\n",
+    "\n",
+    "key_order = {\"age\":0, \"class\":1, \"sex\":2, \"fare\":3}\n",
+    "input_message = [input_message[i] for i in sorted(input_message, key=key_order.__getitem__)]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Predictor"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "marvin_cell": "predictor"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{'prediction_svm': 1, 'prediction_rf': 0}\n"
+     ]
+    }
+   ],
+   "source": [
+    "final_prediction = {\n",
+    "    \"prediction_rf\": marvin_model['rf'].predict([input_message])[0],\n",
+    "    \"prediction_svm\": marvin_model['svm'].predict([input_message])[0]\n",
+    "}\n",
+    "\n",
+    "print(final_prediction)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "language": "python",
+   "name": "python2"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "2.7.6"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/Titanic_Kaggle_Sample_old-checkpoint.ipynb b/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/Titanic_Kaggle_Sample_old-checkpoint.ipynb
new file mode 100644
index 0000000..0322611
--- /dev/null
+++ b/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/Titanic_Kaggle_Sample_old-checkpoint.ipynb
@@ -0,0 +1,372 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Documentation"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Sample"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import marvin_titanic_engine\n",
+    "import os"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/vagrant/projects/titanic-engine/notebooks\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(os.getcwd())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#from marvin_python_toolbox.common.data import MarvinData\n",
+    "import pandas as pd\n",
+    "\n",
+    "train_df = pd.read_csv(\n",
+    "    'marvin_titanic_engine/data_files/train.csv'\n",
+    ")\n",
+    "test_df = pd.read_csv(\n",
+    "    'marvin_titanic_engine/data_files/train.csv'\n",
+    ")\n",
+    "marvin_initial_dataset = {\n",
+    "    'train': train_df,\n",
+    "    'test': test_df\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Training Preparator"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 91,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Length: 1046\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn.model_selection import StratifiedShuffleSplit, train_test_split, cross_val_score, GridSearchCV\n",
+    "\n",
+    "pred_cols = ['Age', 'Pclass', 'Sex']\n",
+    "dep_var = 'Survived'\n",
+    "train_no_na = marvin_initial_dataset['train'][\n",
+    "    pred_cols + [dep_var]\n",
+    "].dropna()\n",
+    "print(\"Length: {}\".format(len(train_no_na)))\n",
+    "\n",
+    "# Feature Engineering\n",
+    "data_X = train_no_na[pred_cols]\n",
+    "data_X.loc[:, 'Sex'] = data_X['Sex'].map({'male': 1, 'female': 0})\n",
+    "data_y = train_no_na[dep_var]\n",
+    "\n",
+    "# Prepare for Stratified Shuffle Split\n",
+    "sss = StratifiedShuffleSplit(n_splits=5, test_size=.6, random_state=0)\n",
+    "sss.get_n_splits(data_X, data_y)\n",
+    "for train_index, test_index in sss.split(data_X, data_y):\n",
+    "    X_train, X_test = data_X.iloc[train_index], data_X.iloc[test_index]\n",
+    "    y_train, y_test = data_y.iloc[train_index], data_y.iloc[test_index]\n",
+    "marvin_dataset = {\n",
+    "    'X_train': X_train,\n",
+    "    'y_train': y_train,\n",
+    "    'X_test': X_test,\n",
+    "    'y_test': y_test,\n",
+    "    'sss': sss\n",
+    "}\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Trainer"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 112,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "('Best score for training data:', 0.76315789473684215)\n",
+      "('Best `C`:', 100)\n",
+      "('Best kernel:', 'rbf')\n",
+      "('Best `gamma`:', 0.001)\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn import svm, neighbors, tree\n",
+    "from sklearn.model_selection import StratifiedShuffleSplit, train_test_split, cross_val_score, GridSearchCV\n",
+    "from sklearn.ensemble import RandomForestClassifier\n",
+    "from sklearn.preprocessing import StandardScaler, scale\n",
+    "from sklearn.linear_model import LogisticRegression\n",
+    "\n",
+    "\n",
+    "# Set the parameter candidates\n",
+    "parameter_candidates = [\n",
+    "    {'C': [1, 10, 100], 'gamma': [0.01, 0.001], 'kernel': ['linear']},\n",
+    "    {'C': [1, 10, 100], 'gamma': [0.01, 0.001], 'kernel': ['rbf']},\n",
+    "]\n",
+    "\n",
+    "# Create a classifier with the parameter candidates\n",
+    "svm_grid = GridSearchCV(estimator=svm.SVC(), param_grid=parameter_candidates, n_jobs=-1)\n",
+    "\n",
+    "# Train the classifier on training data\n",
+    "svm_grid.fit(\n",
+    "    marvin_dataset['X_train'],\n",
+    "    marvin_dataset['y_train']\n",
+    ")\n",
+    "\n",
+    "# use a full grid over all parameters\n",
+    "parameter_candidates = {\n",
+    "    \"max_depth\": [3, None],\n",
+    "    \"random_state\": [0],\n",
+    "    \"min_samples_split\": [2, 3, 10],\n",
+    "    \"min_samples_leaf\": [1, 3, 10],\n",
+    "    \"n_estimators\": [20, 50],\n",
+    "    \"bootstrap\": [True, False],\n",
+    "    \"criterion\": [\"gini\", \"entropy\"]\n",
+    "}\n",
+    "\n",
+    "#clf = RandomForestClassifier(n_estimators=20)\n",
+    "\n",
+    "# run grid search\n",
+    "rf_grid = GridSearchCV(estimator=RandomForestClassifier(), param_grid=parameter_candidates)\n",
+    "rf_grid.fit(\n",
+    "    marvin_dataset['X_train'],\n",
+    "    marvin_dataset['y_train']\n",
+    ")\n",
+    "\n",
+    "marvin_model = {}\n",
+    "marvin_model['svm'] = svm_grid\n",
+    "marvin_model['rf'] = rf_grid\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 113,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Model Type: rf\n",
+      "{'warm_start': False, 'oob_score': False, 'n_jobs': 1, 'verbose': 0, 'max_leaf_nodes': None, 'bootstrap': True, 'min_samples_leaf': 1, 'n_estimators': 20, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'criterion': 'entropy', 'random_state': 0, 'min_impurity_split': 1e-07, 'max_features': 'auto', 'max_depth': 3, 'class_weight': None}\n",
+      "Accuracy Score: 0.7703%\n",
+      "Classification Report:\n",
+      "\n",
+      "             precision    recall  f1-score   support\n",
+      "\n",
+      "        0.0       0.89      0.81      0.85       409\n",
+      "        1.0       0.70      0.82      0.75       219\n",
+      "\n",
+      "avg / total       0.83      0.81      0.82       628\n",
+      "\n",
+      "Confusion Matrix:\n",
+      "\n",
+      "[[332  77]\n",
+      " [ 40 179]]\n",
+      "\n",
+      "\n",
+      "\n",
+      "Model Type: svm\n",
+      "{'kernel': 'rbf', 'C': 100, 'verbose': False, 'probability': False, 'degree': 3, 'shrinking': True, 'max_iter': -1, 'decision_function_shape': None, 'random_state': None, 'tol': 0.001, 'cache_size': 200, 'coef0': 0.0, 'gamma': 0.001, 'class_weight': None}\n",
+      "Accuracy Score: 0.7632%\n",
+      "Classification Report:\n",
+      "\n",
+      "             precision    recall  f1-score   support\n",
+      "\n",
+      "        0.0       0.83      0.84      0.83       371\n",
+      "        1.0       0.76      0.76      0.76       257\n",
+      "\n",
+      "avg / total       0.80      0.80      0.80       628\n",
+      "\n",
+      "Confusion Matrix:\n",
+      "\n",
+      "[[310  61]\n",
+      " [ 62 195]]\n",
+      "\n",
+      "\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn import metrics\n",
+    "for model_type, fitted_model in marvin_model.iteritems():\n",
+    "    print(\"Model Type: {0}\\n{1}\".format(model_type, fitted_model.best_estimator_.get_params()))\n",
+    "    print(\"Accuracy Score: {}%\".format(round(fitted_model.best_score_,4)))\n",
+    "    # Print the classification report of `y_test` and `predicted`\n",
+    "    print(\"Classification Report:\\n\")\n",
+    "    print(metrics.classification_report(fitted_model.predict(marvin_dataset['X_test']), marvin_dataset['y_test']))\n",
+    "\n",
+    "    # Print the confusion matrix\n",
+    "    print(\"Confusion Matrix:\\n\")\n",
+    "    print(metrics.confusion_matrix(fitted_model.predict(marvin_dataset['X_test']), marvin_dataset['y_test']))\n",
+    "    print(\"\\n\\n\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 114,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Feature ranking:\n",
+      "1. feature sex (0.486342)\n",
+      "2. feature pclass (0.265882)\n",
+      "3. feature age (0.247776)\n"
+     ]
+    },
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<matplotlib.figure.Figure at 0x7fe437993a10>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "%matplotlib inline\n",
+    "#marvin_dataset['X_train']\n",
+    "\n",
+    "importances = rf_grid.best_estimator_.feature_importances_\n",
+    "\n",
+    "#std = np.std([rf_grid.best_estimator_.feature_importances_ for tree in rf_grid.estimators_],\n",
+    "#             axis=0)\n",
+    "indices = np.argsort(importances)[::-1]\n",
+    "\n",
+    "# Print the feature ranking\n",
+    "print(\"Feature ranking:\")\n",
+    "\n",
+    "for f in range(marvin_dataset['X_train'].shape[1]):\n",
+    "    print(\"%d. feature %s (%f)\" % (f + 1, pred_cols[indices[f]], importances[indices[f]]))\n",
+    "\n",
+    "# Plot the feature importances of the forest\n",
+    "plt.figure(figsize=(10,5))\n",
+    "plt.title(\"Feature importances\")\n",
+    "plt.bar(range(X_train.shape[1]), importances[indices],\n",
+    "       color=\"r\",  align=\"center\")\n",
+    "stats_order = [pred_cols[x] for x in indices]\n",
+    "plt.xticks(range(marvin_dataset['X_train'].shape[1]), stats_order, rotation='vertical')\n",
+    "plt.xlim([-1, marvin_dataset['X_train'].shape[1]])\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Predictor"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 115,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'prediction1': 0.0, 'prediction2': 1.0}"
+      ]
+     },
+     "execution_count": 115,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# age, class, sex\n",
+    "input_message = [[50, 3, 0]]\n",
+    "\n",
+    "\n",
+    "final_result = {\n",
+    "    \"prediction1\": marvin_model['rf'].predict(input_message)[0],\n",
+    "    \"prediction2\": marvin_model['svm'].predict(input_message)[0]\n",
+    "\n",
+    "}\n",
+    "\n",
+    "final_result"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "language": "python",
+   "name": "python2"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "2.7.6"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/sample-checkpoint.ipynb b/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/sample-checkpoint.ipynb
new file mode 100644
index 0000000..b0d1f86
--- /dev/null
+++ b/kaggle-titanic-engine/notebooks/.ipynb_checkpoints/sample-checkpoint.ipynb
@@ -0,0 +1,53 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Documentation"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Sample"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "import marvin_titanic_engine\n",
+    "# How to connect to spark\n",
+    "from marvin_python_toolbox.common.data_source_provider import get_spark_session\n",
+    "spark = get_spark_session(enable_hive=True)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "language": "python",
+   "name": "python2"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "2.7.6"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/kaggle-titanic-engine/notebooks/Titanic_Kaggle_Sample.ipynb b/kaggle-titanic-engine/notebooks/Titanic_Kaggle_Sample.ipynb
new file mode 100644
index 0000000..82f208a
--- /dev/null
+++ b/kaggle-titanic-engine/notebooks/Titanic_Kaggle_Sample.ipynb
@@ -0,0 +1,509 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Documentation"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Sample Notebook To Build a Model and Make Predictions with the Titanic Dataset from Kaggle"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Table of Contents\n",
+    "\n",
+    "0. [Params](#Params)\n",
+    "1. [Acquisitor and Cleaner](#Acquisitor-and-Cleaner)\n",
+    "2. [Training Preparator](#Training-Preparator)\n",
+    "3. [Trainer](#Trainer)\n",
+    "4. [Metrics Evaluator](#Metrics-Evaluator)\n",
+    "5. [Prediction Preparator](#Prediction-Preparator)\n",
+    "6. [Predictor](#Predictor)\n",
+    "7. [Feedback](#Feedback)\n",
+    "8. [Sample Application](#Sample-Application)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Params"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# puts this params in engine.params file to be used by dryrun and executor as default params\n",
+    "# use a full grid over all parameters\n",
+    "params = {\n",
+    "    \"svm\": [\n",
+    "        {\"C\": [1, 10, 100], \"gamma\": [0.01, 0.001], \"kernel\": [\"linear\"]},\n",
+    "        {\"C\": [1, 10, 100],\"gamma\": [0.01, 0.001],\"kernel\": [\"rbf\"]}\n",
+    "    ],\n",
+    "    \"rf\": {\n",
+    "        \"max_depth\": [3],\n",
+    "        \"random_state\": [0],\n",
+    "        \"min_samples_split\": [2],\n",
+    "        \"min_samples_leaf\": [1],\n",
+    "        \"n_estimators\": [20],\n",
+    "        \"bootstrap\": [True, False],\n",
+    "        \"criterion\": [\"gini\", \"entropy\"]\n",
+    "    },\n",
+    "    \"pred_cols\": [\"Age\", \"Pclass\", \"Sex\", \"Fare\"],\n",
+    "    \"dep_var\": \"Survived\"\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "marvin_cell": "acquisitor"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "891 samples to train with 12 features...\n",
+      "418 samples to test...\n"
+     ]
+    }
+   ],
+   "source": [
+    "from marvin_python_toolbox.common.data import MarvinData\n",
+    "import pandas as pd\n",
+    "\n",
+    "train_df = pd.read_csv(MarvinData.download_file(\"https://s3.amazonaws.com/marvin-engines-data/titanic/train.csv\"))\n",
+    "test_df = pd.read_csv(MarvinData.download_file(\"https://s3.amazonaws.com/marvin-engines-data/titanic/test.csv\"))\n",
+    "\n",
+    "print (\"{} samples to train with {} features...\".format(train_df.shape[0], train_df.shape[1]))\n",
+    "print (\"{} samples to test...\".format(test_df.shape[0]))\n",
+    "\n",
+    "marvin_initial_dataset = {\n",
+    "    'train': train_df,\n",
+    "    'test': test_df\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Training Preparator"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "marvin_cell": "tpreparator"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Length: 714\n",
+      "Length: 331\n",
+      "Preparation is Done!!!!\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/home/vagrant/.virtualenvs/titanic-engine-env/local/lib/python2.7/site-packages/pandas/core/indexing.py:517: SettingWithCopyWarning: \n",
+      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+      "Try using .loc[row_indexer,col_indexer] = value instead\n",
+      "\n",
+      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
+      "  self.obj[item] = s\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn.model_selection import StratifiedShuffleSplit, train_test_split, cross_val_score, GridSearchCV\n",
+    "\n",
+    "train_no_na = marvin_initial_dataset['train'][params[\"pred_cols\"] + [params[\"dep_var\"]]].dropna()\n",
+    "\n",
+    "print(\"Length: {}\".format(len(train_no_na)))\n",
+    "\n",
+    "# Feature Engineering\n",
+    "data_X = train_no_na[params[\"pred_cols\"]]\n",
+    "data_X.loc[:, 'Sex'] = data_X.loc[:, 'Sex'].map({'male': 1, 'female': 0})\n",
+    "data_y = train_no_na[params[\"dep_var\"]]\n",
+    "\n",
+    "# Prepare for Stratified Shuffle Split\n",
+    "sss = StratifiedShuffleSplit(n_splits=5, test_size=.6, random_state=0)\n",
+    "sss.get_n_splits(data_X, data_y)\n",
+    "\n",
+    "# Get Test Dataset\n",
+    "test_no_na = marvin_initial_dataset['test'][params[\"pred_cols\"]].dropna()\n",
+    "\n",
+    "print(\"Length: {}\".format(len(test_no_na)))\n",
+    "\n",
+    "# Feature Engineering\n",
+    "test_X = test_no_na[params[\"pred_cols\"]]\n",
+    "test_X.loc[:, 'Sex'] = test_X.loc[:, 'Sex'].map({'male': 1, 'female': 0})\n",
+    "\n",
+    "marvin_dataset = {\n",
+    "    'X_train': data_X,\n",
+    "    'y_train': data_y,\n",
+    "    'X_test': test_X,\n",
+    "    'sss': sss\n",
+    "}\n",
+    "\n",
+    "print (\"Preparation is Done!!!!\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Trainer"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "marvin_cell": "trainer"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "\n",
+      "Starting grid search using SVM!\n",
+      "Model Type: SVM\n",
+      "{'kernel': 'linear', 'C': 10, 'verbose': False, 'probability': False, 'degree': 3, 'shrinking': True, 'max_iter': -1, 'decision_function_shape': None, 'random_state': None, 'tol': 0.001, 'cache_size': 200, 'coef0': 0.0, 'gamma': 0.01, 'class_weight': None}\n",
+      "Accuracy Score: 0.78%\n",
+      "\n",
+      "\n",
+      "Starting grid search using RandomForestClassifier!\n",
+      "Model Type: RF\n",
+      "{'warm_start': False, 'oob_score': False, 'n_jobs': 1, 'verbose': 0, 'max_leaf_nodes': None, 'bootstrap': True, 'min_samples_leaf': 1, 'n_estimators': 20, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'criterion': 'entropy', 'random_state': 0, 'min_impurity_split': 1e-07, 'max_features': 'auto', 'max_depth': 3, 'class_weight': None}\n",
+      "Accuracy Score: 0.7925%\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn import svm, neighbors, tree\n",
+    "from sklearn.model_selection import StratifiedShuffleSplit, train_test_split, cross_val_score, GridSearchCV\n",
+    "from sklearn.ensemble import RandomForestClassifier\n",
+    "from sklearn.preprocessing import StandardScaler, scale\n",
+    "from sklearn.linear_model import LogisticRegression\n",
+    "\n",
+    "print(\"\\n\\nStarting grid search using SVM!\")\n",
+    "\n",
+    "# Create a classifier with the parameter candidates\n",
+    "svm_grid = GridSearchCV(estimator=svm.SVC(), param_grid=params[\"svm\"], cv=marvin_dataset[\"sss\"], n_jobs=-1)\n",
+    "\n",
+    "# Train the classifier on training data\n",
+    "svm_grid.fit(\n",
+    "    marvin_dataset['X_train'],\n",
+    "    marvin_dataset['y_train']\n",
+    ")\n",
+    "\n",
+    "print(\"Model Type: SVM\\n{}\".format(svm_grid.best_estimator_.get_params()))\n",
+    "print(\"Accuracy Score: {}%\".format(round(svm_grid.best_score_,4)))\n",
+    "\n",
+    "print(\"\\n\\nStarting grid search using RandomForestClassifier!\")\n",
+    "\n",
+    "# run grid search\n",
+    "rf_grid = GridSearchCV(estimator=RandomForestClassifier(), param_grid=params[\"rf\"], cv=marvin_dataset[\"sss\"])\n",
+    "rf_grid.fit(\n",
+    "    marvin_dataset['X_train'],\n",
+    "    marvin_dataset['y_train']\n",
+    ")\n",
+    "\n",
+    "print(\"Model Type: RF\\n{}\".format(rf_grid.best_estimator_.get_params()))\n",
+    "print(\"Accuracy Score: {}%\".format(round(rf_grid.best_score_,4)))\n",
+    "\n",
+    "marvin_model = {\n",
+    "    'svm': svm_grid,\n",
+    "    'rf': rf_grid\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Metrics Evaluation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "marvin_cell": "evaluator"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Classification Report:\n",
+      "\n",
+      "             precision    recall  f1-score   support\n",
+      "\n",
+      "          0       0.95      0.79      0.86       512\n",
+      "          1       0.62      0.90      0.74       202\n",
+      "\n",
+      "avg / total       0.86      0.82      0.83       714\n",
+      "\n",
+      "Confusion Matrix:\n",
+      "\n",
+      "[[403 109]\n",
+      " [ 21 181]]\n",
+      "\n",
+      "\n",
+      "\n",
+      "Classification Report:\n",
+      "\n",
+      "             precision    recall  f1-score   support\n",
+      "\n",
+      "          0       0.85      0.79      0.82       453\n",
+      "          1       0.68      0.75      0.72       261\n",
+      "\n",
+      "avg / total       0.79      0.78      0.78       714\n",
+      "\n",
+      "Confusion Matrix:\n",
+      "\n",
+      "[[360  93]\n",
+      " [ 64 197]]\n",
+      "\n",
+      "\n",
+      "\n",
+      "Feature ranking:\n",
+      "1. feature Sex (0.542498)\n",
+      "2. feature Pclass (0.184832)\n",
+      "3. feature Fare (0.170240)\n",
+      "4. feature Age (0.102431)\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn import metrics\n",
+    "import numpy as np\n",
+    "\n",
+    "all_metrics = {}\n",
+    "\n",
+    "_model = marvin_model\n",
+    "for model_type, fitted_model in _model.iteritems():\n",
+    "    \n",
+    "    y_predicted = fitted_model.predict(marvin_dataset['X_train'])\n",
+    "    \n",
+    "    all_metrics[model_type] = {}\n",
+    "    all_metrics[model_type][\"report\"] = metrics.classification_report(y_predicted, marvin_dataset['y_train'])\n",
+    "    all_metrics[model_type][\"confusion_matrix\"] = metrics.confusion_matrix(y_predicted, marvin_dataset['y_train'])                                                               \n",
+    "    \n",
+    "    # Print the classification report of `y_test` and `predicted`\n",
+    "    print(\"Classification Report:\\n\")\n",
+    "    print(all_metrics[model_type][\"report\"])\n",
+    "    \n",
+    "    # Print the confusion matrix\n",
+    "    print(\"Confusion Matrix:\\n\")\n",
+    "    print(all_metrics[model_type][\"confusion_matrix\"])\n",
+    "    print(\"\\n\\n\")\n",
+    "\n",
+    "importances = _model[\"rf\"].best_estimator_.feature_importances_\n",
+    "indices = np.argsort(importances)[::-1]\n",
+    "\n",
+    "# Print the feature ranking\n",
+    "print(\"Feature ranking:\")\n",
+    "\n",
+    "all_metrics[\"feature_ranking\"] = []\n",
+    "for f in range(marvin_dataset['X_train'].shape[1]):\n",
+    "    all_metrics[\"feature_ranking\"].append((f + 1, params[\"pred_cols\"][indices[f]], importances[indices[f]]))\n",
+    "    print(\"%d. feature %s (%f)\" % all_metrics[\"feature_ranking\"][f])\n",
+    "\n",
+    "marvin_metrics = all_metrics"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAFUCAYAAADmhXKJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAGKNJREFUeJzt3X+0XWV95/H3x4QfFlAUIgIJPxS0poiK4UdnWceKHYk/QLFMYYotDh1krWYsY3+IVlmWli6lVtdIsQWEilgEhFWNGhd2anWUDshFERswNUZsAipRglBQIfCdP86+9BhvuDvkuTn33Lxfa53FfvZ+ztnfczZePzz72XunqpAkSdLWe8KoC5AkSZorDFaSJEmNGKwkSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFK0qyW5G+SvGPUdUhSH/E+VtLclOR2YC/g4aHVz6qqO7fiM18CfKSqFm5ddeMpyYeAdVX19lHXIml2csRKmtteXVW7Dr0ed6hqIcn8Ue5/aySZN+oaJM1+BitpO5TkqCT/nOSeJF/rRqImt70hyW1J7kuyJskbu/W7AJ8B9kny791rnyQfSvJnQ+9/SZJ1Q+3bk7wlyS3A/Unmd++7Jsn6JN9O8qbHqPXRz5/87CR/lOSuJN9N8pokr0jyr0nuTvK2ofe+M8nVSa7svs9XkjxvaPtzkny++x1WJjl2k/3+dZIVSe4HTgV+E/ij7rt/sut3ZpJvdZ9/a5LXDn3GKUm+lOQ9STZ033Xp0PanJvnbJHd22z8+tO1VSW7uavvnJIcObXtLkju6fa5KcnSPwy5pGzBYSduZJPsCnwb+DHgq8AfANUkWdF3uAl4FPAl4A/C+JIdV1f3AUuDOxzECdhLwSmB34BHgk8DXgH2Bo4Ezkry852c9Hdi5e+9ZwEXAycALgV8B3pHkwKH+xwEf677r5cDHk+yQZIeujs8CTwP+J/B3SZ499N7/BpwD7AZ8GPg74Nzuu7+66/Otbr9PBv4E+EiSvYc+40hgFbAncC5wcZJ02y4DfgH4pa6G9wEkeQFwCfBGYA/gAmB5kp26+pYBh1fVbsDLgdt7/naSZpjBSprbPt6NeNwzNBpyMrCiqlZU1SNV9Q/ABPAKgKr6dFV9qwa+wCB4/MpW1vH+qlpbVT8GDgcWVNXZVfVgVa1hEI5O7PlZDwHnVNVDwBUMAsv/rqr7qmolcCvwvKH+N1XV1V3/9zIIZUd1r12Bd3V1fA74FIMQOOkTVXVd9zv9ZKpiqupjVXVn1+dK4JvAEUNdvlNVF1XVw8ClwN7AXl34WgqcXlUbquqh7vcGOA24oKpuqKqHq+pS4KddzQ8DOwGLk+xQVbdX1bd6/naSZpjBSprbXlNVu3ev13Tr9gdOGApc9wAvYvB/+CRZmuT67rTaPQwC155bWcfaoeX9GZxOHN7/2xhMtO/jh11IAfhx98/vD23/MYPA9HP7rqpHgHXAPt1rbbdu0ncYjIRNVfeUkvzW0Cm7e4BD+Nnf63tD+3+gW9wVWATcXVUbpvjY/YHf3+Q3WgTsU1WrgTOAdwJ3JbkiyT7T1Slp2zBYSduftcBlQ4Fr96raparelWQn4BrgPcBeVbU7sAKYPHU11WXE9zM4nTXp6VP0GX7fWuDbm+x/t6p6xVZ/s6ktmlxI8gRgIXBn91rUrZu0H3DHZur+uXaS/RmMti0D9uh+r3/hP36vx7IWeGqS3Tez7ZxNfqNfqKqPAlTV5VX1IgYBrIB399ifpG3AYCVtfz4CvDrJy5PMS7JzNyl8IbAjg9NM64GN3UTr/zL03u8DeyR58tC6m4FXdBOxn85gNOWxfBm4r5uA/cSuhkOSHN7sG/6sFyY5PoMrEs9gcErteuAG4AEGk9F3yGAC/6sZnF7cnO8Dzxhq78Ig2KyHwcR/BiNW06qq7zK4GOADSZ7S1fDibvNFwOlJjszALklemWS3JM9O8tIuBP+EwQjdI5vZjaRtzGAlbWeqai2DCd1vYxAI1gJ/CDyhqu4D3gRcBWxgMHl7+dB7vwF8FFjTnaLah8EE7K8xmED9WeDKafb/MIPJ8c8Hvg38APggg8nfM+ETwG8w+D6vB47v5jM9yCBILe1q+ADwW9133JyLGcxtuifJx6vqVuAvgf/HIHQ9F7huC2p7PYM5Y99gcNHAGQBVNQH8D+CvurpXA6d079kJeFdX8/cYTHp/6xbsU9IM8gahkuasJO8EDqqqk0ddi6TtgyNWkiRJjRisJEmSGvFUoCRJUiOOWEmSJDVisJIkSWpkZE+a33PPPeuAAw4Y1e4lSZJ6u+mmm35QVQum6zeyYHXAAQcwMTExqt1LkiT1luQ7ffp5KlCSJKkRg5UkSVIjBitJkqRGDFaSJEmNGKwkSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFKkiSpEYOVJElSIwYrSZKkRkb2rEANSUZdwdxXNeoKJEnbAUesJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDVisJIkSWrEYCVJktSIwUqSJKkRg5UkSVIjBitJkqRGegWrJMckWZVkdZIzp9h+SpL1SW7uXr/TvlRJkqTZbf50HZLMA84Hfg1YB9yYZHlV3bpJ1yuratkM1ChJkjQW+oxYHQGsrqo1VfUgcAVw3MyWJUmSNH76BKt9gbVD7XXduk29LsktSa5OsqhJdZIkSWOk1eT1TwIHVNWhwD8Al07VKclpSSaSTKxfv77RriVJkmaHPsHqDmB4BGpht+5RVfXDqvpp1/wg8MKpPqiqLqyqJVW1ZMGCBY+nXkmSpFmrT7C6ETg4yYFJdgROBJYPd0iy91DzWOC2diVKkiSNh2mvCqyqjUmWAdcC84BLqmplkrOBiapaDrwpybHARuBu4JQZrFmSJGlWSlWNZMdLliypiYmJkex71klGXcHcN6J/zyVJc0OSm6pqyXT9vPO6JElSIwYrSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDVisJIkSWrEYCVJktSIwUqSJKkRg5UkSVIjBitJkqRGDFaSJEmNGKwkSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFKkiSpEYOVJElSIwYrSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDVisJIkSWrEYCVJktRIr2CV5Jgkq5KsTnLmY/R7XZJKsqRdiZIkSeNh2mCVZB5wPrAUWAyclGTxFP12A34PuKF1kZIkSeOgz4jVEcDqqlpTVQ8CVwDHTdHvT4F3Az9pWJ8kSdLY6BOs9gXWDrXXdeseleQwYFFVfbphbZIkSWNlqyevJ3kC8F7g93v0PS3JRJKJ9evXb+2uJUmSZpU+weoOYNFQe2G3btJuwCHA55PcDhwFLJ9qAntVXVhVS6pqyYIFCx5/1ZIkSbNQn2B1I3BwkgOT7AicCCyf3FhVP6qqPavqgKo6ALgeOLaqJmakYkmSpFlq2mBVVRuBZcC1wG3AVVW1MsnZSY6d6QIlSZLGxfw+napqBbBik3VnbabvS7a+LEmSpPHjndclSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFKkiSpEYOVJElSIwYrSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDVisJIkSWrEYCVJktSIwUqSJKkRg5UkSVIjBitJkqRGDFaSJEmNGKwkSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFKkiSpEYOVJElSIwYrSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEZ6BaskxyRZlWR1kjOn2H56kq8nuTnJl5Isbl+qJEnS7DZtsEoyDzgfWAosBk6aIjhdXlXPrarnA+cC721eqSRJ0izXZ8TqCGB1Va2pqgeBK4DjhjtU1b1DzV2AaleiJEnSeJjfo8++wNqh9jrgyE07Jfld4M3AjsBLm1QnSZI0RppNXq+q86vqmcBbgLdP1SfJaUkmkkysX7++1a4lSZJmhT7B6g5g0VB7Ybduc64AXjPVhqq6sKqWVNWSBQsW9K9SkiRpDPQJVjcCByc5MMmOwInA8uEOSQ4ear4S+Ga7EiVJksbDtHOsqmpjkmXAtcA84JKqWpnkbGCiqpYDy5K8DHgI2AD89kwWLUmSNBv1mbxOVa0AVmyy7qyh5d9rXJckSdLY8c7rkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDVisJIkSWrEYCVJktSIwUqSJKkRg5UkSVIjBitJkqRGDFaSJEmNGKwkSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFKkiSpEYOVJElSIwYrSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDVisJIkSWrEYCVJktSIwUqSJKkRg5UkSVIjvYJVkmOSrEqyOsmZU2x/c5Jbk9yS5B+T7N++VEmSpNlt2mCVZB5wPrAUWAyclGTxJt2+CiypqkOBq4FzWxcqSZI02/UZsToCWF1Va6rqQeAK4LjhDlX1T1X1QNe8HljYtkxJkqTZr0+w2hdYO9Re163bnFOBz0y1IclpSSaSTKxfv75/lZIkSWOg6eT1JCcDS4C/mGp7VV1YVUuqasmCBQta7lqSJGnk5vfocwewaKi9sFv3M5K8DPhj4D9X1U/blCdJkjQ++oxY3QgcnOTAJDsCJwLLhzskeQFwAXBsVd3VvkxJkqTZb9pgVVUbgWXAtcBtwFVVtTLJ2UmO7br9BbAr8LEkNydZvpmPkyRJmrP6nAqkqlYAKzZZd9bQ8ssa1yVJkjR2vPO6JElSIwYrSZKkRnqdCpT0GJJRVzD3VY26AknqxRErSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1Ii3W5C0/fJWGduGt8vQdsQRK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDVisJIkSWrEYCVJktSIwUqSJKkRg5UkSVIjBitJkqRGDFaSJEmNGKwkSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFKkiSpEYOVJElSIwYrSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDXSK1glOSbJqiSrk5w5xfYXJ/lKko1Jfr19mZIkSbPftMEqyTzgfGApsBg4KcniTbr9G3AKcHnrAiVJksbF/B59jgBWV9UagCRXAMcBt052qKrbu22PzECNkiRJY6FPsNoXWDvUXgccOTPlSJLUUzLqCua+qlFXMHa26eT1JKclmUgysX79+m25a0mSpBnXJ1jdASwaai/s1m2xqrqwqpZU1ZIFCxY8no+QJEmatfoEqxuBg5McmGRH4ERg+cyWJUmSNH6mDVZVtRFYBlwL3AZcVVUrk5yd5FiAJIcnWQecAFyQZOVMFi1JkjQb9Zm8TlWtAFZssu6soeUbGZwilCRJ2m5553VJkqRGDFaSJEmNGKwkSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFKkiSpEYOVJElSIwYrSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqRGDlSRJUiMGK0mSpEYMVpIkSY0YrCRJkhoxWEmSJDVisJIkSWrEYCVJktSIwUqSJKkRg5UkSVIjBitJkqRGDFaSJEmNGKwkSZIaMVhJkiQ1YrCSJElqxGAlSZLUiMFKkiSpEYOVJElSIwYrSZKkRgxWkiRJjRisJEmSGjFYSZIkNWKwkiRJasRgJUmS1IjBSpIkqZFewSrJMUlWJVmd5Mwptu+U5Mpu+w1JDmhdqCRJ0mw3bbBKMg84H1gKLAZOSrJ4k26nAhuq6iDgfcC7WxcqSZI02/UZsToCWF1Va6rqQeAK4LhN+hwHXNotXw0cnSTtypQkSZr9+gSrfYG1Q+113bop+1TVRuBHwB4tCpQkSRoX87flzpKcBpzWNf89yaptuX81tSfwg1EX0ZsDqMPG69iBx+9nefzGl8duvO3fp1OfYHUHsGiovbBbN1WfdUnmA08GfrjpB1XVhcCFfQrT7JZkoqqWjLoObTmP3Xjz+I0vj932oc+pwBuBg5McmGRH4ERg+SZ9lgO/3S3/OvC5qqp2ZUqSJM1+045YVdXGJMuAa4F5wCVVtTLJ2cBEVS0HLgYuS7IauJtB+JIkSdqu9JpjVVUrgBWbrDtraPknwAltS9Ms5ynd8eWxG28ev/HlsdsOxDN2kiRJbfhIG0mSpEYMVpIkSY0YrCRJkhoxWKmXJH/a3aNssv2kJH87yprUX5JnJtmpW35Jkjcl2X3UdamfDJyc5KyuvV+SI0Zdl6aXZK8kFyf5TNdenOTUUdelmWOwUl/zgRuSHJrk1xjc3+ymEdek/q4BHk5yEIMrkxYBl4+2JG2BDwC/DJzUte8Dzh9dOdoCH2Jwu6J9uva/AmeMrBrNuG36SBuNr6p6a5L/A9wAbABeXFWrR1yW+nukuyfda4Hzquq8JF8ddVHq7ciqOmzymFXVhu6GzZr99qyqq5K8FR69N+TDoy5KM8cRK/WS5MXA+4Gzgc8D5yXZ5zHfpNnkoSQnMXhCwqe6dTuMsB5tmYeSzAMKIMkC4JHRlqSe7k+yB/9x7I4CfjTakjSTHLFSX+8BTqiqWwGSHA98DvjFkValvt4AnA6cU1XfTnIgcNmIa1J/7wf+HnhaknMYPDrs7aMtST29mcFj356Z5DpgAYPjpznKG4SqlyTzqurhTdbtUVU/97BtzW5JngIsqqpbRl2L+kvyi8DRQIB/rKrbRlySeuou/Hk2g2O3qqoeGnFJmkEGK/WSZC/gz4F9q+qYJIuBX66qi0dcmnpI8nngWAaj1DcBdwHXVdWbR1mXptedAlxZVY4Oj6FudH9TPwK+XlV3bet6NPOcY6W+PsTgypa9u7ZXtoyXJ1fVvcDxwIer6kjgZSOuST10I8Wrkuw36lr0uJwKfBD4ze51EfAW4Lokrx9lYZoZzrFSX17ZMt7mJ9kb+K/AH4+6GG2xpwArk3wZuH9yZVUdO7qS1NN84DlV9X14dPT/w8CRwP/FuY5zjsFKfXlly3g7m8GI45eq6sYkzwC+OeKa1N87Rl2AHrdFk6Gqc1e37u4kzrWag5xjpV6SHAacBxwC/AvdlS1OgJakzUvyAWA/4GPdqtcB64A/BD5VVb86qto0MwxWekxJDgfWVtX3uitb3sjgD8OtwFlVdfdIC1QvSXZmMNfjl4CdJ9dX1X8fWVHqrRshPg94DrAjMA+4v6qeNNLCNK0kYTC38UXdqg3AXlX1u6OrSjPJyeuazgXAg93yf2IwP+d8Bn8cLhxVUdpilwFPB14OfAFYyOCxKBoPf8XgcTbfBJ4I/A4+0mYs1GD0Yg2wEXgt8KuAt8qYwxyx0mNK8rWqel63fD6wvqre2bVvrqrnj7I+9ZPkq1X1giS3VNWhSXYAvlhVR426Nk0vyURVLZk8ft26r1bVC0Zdm6aW5FkMwvBJwA+AK4E/qKr9R1qYZpyT1zWdeUnmV9VGBjcnPG1om//+jI/JSbL3JDkE+B7wtBHWoy3zQPdswJuTnAt8F884zHbfAL4IvGryuapJ/tdoS9K24P8wNZ2PAl9I8gngxwz+UJDkILwqcJxc2N1x/R0MHq9xK3DuaEvSFng9g7/XyxjcbmERg7mOmr2OZxCA/ynJRUkm75qvOc5TgZpWN3F2b+CzVXV/t+5ZwK5V9ZWRFifNYUn2q6p/G3UdevyS7AIcx+CU4EsZ3MPq76vqsyMtTDPGYCXNYUke85E1VfXebVWLtlySr1TVYd3yNVXlKNUY60aNTwB+o6qOHnU9mhnOkZHmtt1GXYC2yvCpo2eMrAo1UVWTV1N7RfUcZrCS5rCq+pNR16CtUptZljRLOXld2g4kuTTJ7kPtpyS5ZJQ1qZfnJbk3yX3Aod3yvUnuS3LvqIuT9PMcsZK2D4dW1T2TjarakMR7IM1yVTVv1DVI2jKOWEnbhyd0E2cBSPJU/A8rSWrOP6zS9uEvgeuTXNW1TwDOGWE9kjQnebsFaTuRZDGD++gAfK6qbh1lPZI0FxmspDksyc7A6cBBwNeBi7vHE0mSZoDBSprDklzJ4DmBXwSWArdX1RmjrUqS5i6DlTSHJfl6VT23W54PfHnyTt6SpPa8KlCa2x6aXPAUoCTNPEespDksycPA/ZNN4InAA91yVdWTRlWbJM1FBitJkqRGPBUoSZLUiMFKkiSpEYOVJElSIwYrSZKkRgxWkiRJjfx/Ong3pjs9IOMAAAAASUVORK5CYII=\n",
+      "text/plain": [
+       "<matplotlib.figure.Figure at 0x7fc33cf95190>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "import matplotlib.pyplot as plt\n",
+    "%matplotlib inline\n",
+    "\n",
+    "# Plot the feature importances of the forest\n",
+    "plt.figure(figsize=(10,5))\n",
+    "plt.title(\"Feature importances\")\n",
+    "plt.bar(range(marvin_dataset[\"X_train\"].shape[1]), importances[indices], color=\"r\",  align=\"center\")\n",
+    "\n",
+    "stats_order = [params[\"pred_cols\"][x] for x in indices]\n",
+    "\n",
+    "plt.xticks(range(marvin_dataset['X_train'].shape[1]), stats_order, rotation='vertical')\n",
+    "plt.xlim([-1, marvin_dataset['X_train'].shape[1]])\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Prediction Preparator"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# put this values in engine.messages to be used as dryrun samples\n",
+    "# age, class, sex\n",
+    "# reminder: 'male': 1, 'female': 0\n",
+    "input_message = {\"Age\": 50, \"Pclass\": 3, \"Sex\": 0, \"Fare\": 5}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {
+    "marvin_cell": "ppreparator"
+   },
+   "outputs": [],
+   "source": [
+    "# Given the input: input_message = {\"age\": 50, \"class\": 3, \"sex\": 0}\n",
+    "# Transform the message into a correctly ordered list for the model\n",
+    "\n",
+    "key_order = {\"Age\":0, \"Pclass\":1, \"Sex\":2, \"Fare\":3}\n",
+    "input_message = [input_message[i] for i in sorted(input_message, key=key_order.__getitem__)]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Predictor"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {
+    "marvin_cell": "predictor"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{'prediction_svm': 1, 'prediction_rf': 0}\n"
+     ]
+    }
+   ],
+   "source": [
+    "final_prediction = {\n",
+    "    \"prediction_rf\": marvin_model['rf'].predict([input_message])[0],\n",
+    "    \"prediction_svm\": marvin_model['svm'].predict([input_message])[0]\n",
+    "}\n",
+    "\n",
+    "print(final_prediction)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Sample Application"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 45,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Passenger Information: {'Fare': 7.8292000000000002, 'Age': 34.5, 'Pclass': 3.0, 'Sex': 1.0}\n",
+      "Prediction: {'prediction_svm': 0, 'prediction_rf': 0}\n",
+      "\n",
+      "Passenger Information: {'Fare': 7.0, 'Age': 47.0, 'Pclass': 3.0, 'Sex': 0.0}\n",
+      "Prediction: {'prediction_svm': 1, 'prediction_rf': 0}\n",
+      "\n",
+      "Passenger Information: {'Fare': 9.6875, 'Age': 62.0, 'Pclass': 2.0, 'Sex': 1.0}\n",
+      "Prediction: {'prediction_svm': 0, 'prediction_rf': 0}\n",
+      "\n",
+      "Passenger Information: {'Fare': 8.6624999999999996, 'Age': 27.0, 'Pclass': 3.0, 'Sex': 1.0}\n",
+      "Prediction: {'prediction_svm': 0, 'prediction_rf': 0}\n",
+      "\n",
+      "Passenger Information: {'Fare': 12.2875, 'Age': 22.0, 'Pclass': 3.0, 'Sex': 0.0}\n",
+      "Prediction: {'prediction_svm': 1, 'prediction_rf': 1}\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Take all of the entries in the test dataset and make predictions for them\n",
+    "passengers = marvin_dataset[\"X_test\"].to_dict(orient='records')\n",
+    "for passenger in passengers[0:5]:\n",
+    "    \n",
+    "    # Prediction Preparator\n",
+    "    key_order = {\"Age\":0, \"Pclass\":1, \"Sex\":2, \"Fare\":3}\n",
+    "    input_message = [passenger[i] for i in sorted(passenger, key=key_order.__getitem__)]\n",
+    "    \n",
+    "    final_prediction = {\n",
+    "    \"prediction_rf\": marvin_model['rf'].predict([input_message])[0],\n",
+    "    \"prediction_svm\": marvin_model['svm'].predict([input_message])[0]\n",
+    "    }\n",
+    "\n",
+    "    print(\"Passenger Information: {0}\\nPrediction: {1}\\n\".format(passenger, final_prediction))"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "language": "python",
+   "name": "python2"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "2.7.12"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/kaggle-titanic-engine/pytest.ini b/kaggle-titanic-engine/pytest.ini
new file mode 100644
index 0000000..cab8644
--- /dev/null
+++ b/kaggle-titanic-engine/pytest.ini
@@ -0,0 +1,4 @@
+[pytest]
+minversion    = 2.0
+norecursedirs = .git .tox .eggs .cache *.egg build dist tmp*
+python_files  = test*.py
\ No newline at end of file
diff --git a/kaggle-titanic-engine/setup.cfg b/kaggle-titanic-engine/setup.cfg
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/kaggle-titanic-engine/setup.cfg
diff --git a/kaggle-titanic-engine/setup.py b/kaggle-titanic-engine/setup.py
new file mode 100644
index 0000000..9a74b3f
--- /dev/null
+++ b/kaggle-titanic-engine/setup.py
@@ -0,0 +1,95 @@
+from __future__ import print_function
+
+from os.path import dirname, join
+from setuptools import setup, find_packages
+from setuptools.command.test import test as TestCommand
+
+
+REQUIREMENT_TESTS = [
+    'pytest>=2.6.4',
+    'pytest-cov>=1.8.1',
+    'mock>=2.0.0',
+    'virtualenv>=15.0.1',
+    'tox>=2.2.0'
+]
+
+
+def _get_version():
+    """Return the project version from VERSION file."""
+
+    with open(join(dirname(__file__), 'marvin_titanic_engine/VERSION'), 'rb') as f:
+        version = f.read().decode('ascii').strip()
+    return version
+
+
+class Tox(TestCommand):
+    """Run the test cases using TOX command."""
+
+    user_options = [('tox-args=', 'a', "Arguments to pass to tox")]
+
+    def initialize_options(self):
+        TestCommand.initialize_options(self)
+        self.tox_args = None
+
+    def finalize_options(self):
+        TestCommand.finalize_options(self)
+        self.test_args = []
+        self.test_suite = True
+
+    def run_tests(self):
+        # Import here, cause outside the eggs aren't loaded
+        import tox
+        import shlex
+        import sys
+        args = self.tox_args
+        if args:
+            args = shlex.split(self.tox_args)
+        else:
+            # Run all tests by default
+            args = ['-c', join(dirname(__file__), 'tox.ini'), 'tests']
+        errno = tox.cmdline(args=args)
+        sys.exit(errno)
+
+
+setup(
+    name='marvin_titanic_engine',
+    version=_get_version(),
+    url='',
+    description='a look at the kaggle data fr the titanic',
+    long_description=open(join(dirname(__file__), 'README.md')).read(),
+    author='jeremy.elster',
+    maintainer='jeremy.elster',
+    maintainer_email='jeremy.elster@b2wdigital.com',
+    packages=find_packages(exclude=('tests', 'tests.*')),
+    include_package_data=True,
+    zip_safe=False,
+    classifiers=[
+        'Development Status :: 3 - Alpha',
+        'Intended Audience :: Developers',
+        'Programming Language :: Python',
+        'Programming Language :: Python :: 2',
+        'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: 3',
+        'Programming Language :: Python :: 3.3',
+        'Programming Language :: Python :: 3.4',
+        'Programming Language :: Python :: 3.5',
+        'Topic :: Software Development :: Libraries :: Python Modules',
+    ],
+    install_requires=[
+        'scikit-learn==0.18.2',
+        'scipy==0.19.1',
+        'numpy==1.13.1',
+        'pandas==0.20.3',
+        'matplotlib==2.0.2',
+        'marvin-python-toolbox==0',
+        'Fabric==1.14.0',
+    ],
+    dependency_links=['git+https://github.com/marvin-ai/marvin-python-toolbox.git/@master#egg=marvin_python_toolbox-0'],
+    tests_require=REQUIREMENT_TESTS,
+    extras_require={
+        'testing': REQUIREMENT_TESTS,
+    },
+    cmdclass={
+        'test': Tox,
+    },
+)
\ No newline at end of file
diff --git a/kaggle-titanic-engine/tests/conftest.py b/kaggle-titanic-engine/tests/conftest.py
new file mode 100644
index 0000000..efd37f3
--- /dev/null
+++ b/kaggle-titanic-engine/tests/conftest.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+import os
+import pytest
+
+os.environ['TESTING'] = 'True'
+
+
+@pytest.fixture
+def mocked_params():
+    return {'params': 1}
diff --git a/kaggle-titanic-engine/tests/data_handler/test_acquisitor_and_cleaner.py b/kaggle-titanic-engine/tests/data_handler/test_acquisitor_and_cleaner.py
new file mode 100644
index 0000000..32a668f
--- /dev/null
+++ b/kaggle-titanic-engine/tests/data_handler/test_acquisitor_and_cleaner.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+try:
+    import mock
+
+except ImportError:
+    import unittest.mock as mock
+
+from marvin_titanic_engine.data_handler import AcquisitorAndCleaner
+
+
+@mock.patch('marvin_python_toolbox.common.data.MarvinData.download_file')
+@mock.patch('marvin_titanic_engine.data_handler.acquisitor_and_cleaner.pd.read_csv')
+def test_execute(read_csv_mocked, download_mocked, mocked_params):
+
+    ac = AcquisitorAndCleaner()
+    ac.execute(params=mocked_params)
+
+    download_mocked.assert_called_with('https://s3.amazonaws.com/marvin-engines-data/titanic/test.csv')
+    read_csv_mocked.assert_called()
diff --git a/kaggle-titanic-engine/tests/data_handler/test_training_preparator.py b/kaggle-titanic-engine/tests/data_handler/test_training_preparator.py
new file mode 100644
index 0000000..55a39d5
--- /dev/null
+++ b/kaggle-titanic-engine/tests/data_handler/test_training_preparator.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+try:
+    import mock
+
+except ImportError:
+    import unittest.mock as mock
+
+import pandas as pd
+from marvin_titanic_engine.data_handler import TrainingPreparator
+
+
+@mock.patch('marvin_titanic_engine.data_handler.training_preparator.StratifiedShuffleSplit')
+@mock.patch('marvin_titanic_engine.data_handler.training_preparator.len')
+def test_execute(len_mocked, split_mocked, mocked_params):
+
+    test_dataset = {
+        "train": pd.DataFrame({'Sex': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}),
+        "test": pd.DataFrame({'Sex': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
+    }
+
+    mocked_params = {
+        "pred_cols": ["Sex", "B"],
+        "dep_var": "C"
+    }
+
+    ac = TrainingPreparator(initial_dataset=test_dataset)
+    ac.execute(params=mocked_params)
+
+    len_mocked.assert_called()
+    split_mocked.assert_called_with(n_splits=5, random_state=0, test_size=0.6)
diff --git a/kaggle-titanic-engine/tests/prediction/test_feedback.py b/kaggle-titanic-engine/tests/prediction/test_feedback.py
new file mode 100644
index 0000000..6d9f6ca
--- /dev/null
+++ b/kaggle-titanic-engine/tests/prediction/test_feedback.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+try:
+    import mock
+
+except ImportError:
+    import unittest.mock as mock
+
+from marvin_titanic_engine.prediction import Feedback
+
+
+class TestFeedback:
+    def test_execute(self, mocked_params):
+        fb = Feedback()
+        fb.execute(input_message="fake message", params=mocked_params)
+        assert not fb._params
\ No newline at end of file
diff --git a/kaggle-titanic-engine/tests/prediction/test_prediction_preparator.py b/kaggle-titanic-engine/tests/prediction/test_prediction_preparator.py
new file mode 100644
index 0000000..396272b
--- /dev/null
+++ b/kaggle-titanic-engine/tests/prediction/test_prediction_preparator.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+try:
+    import mock
+
+except ImportError:
+    import unittest.mock as mock
+
+from marvin_titanic_engine.prediction import PredictionPreparator
+
+
+def test_execute(mocked_params):
+
+    message = {"Age": 50, "Pclass": 3, "Sex": 0}
+
+    ac = PredictionPreparator()
+    ac.execute(input_message=message, params=mocked_params)
+
+    assert not ac._params
diff --git a/kaggle-titanic-engine/tests/prediction/test_predictor.py b/kaggle-titanic-engine/tests/prediction/test_predictor.py
new file mode 100644
index 0000000..b42b909
--- /dev/null
+++ b/kaggle-titanic-engine/tests/prediction/test_predictor.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+try:
+    import mock
+
+except ImportError:
+    import unittest.mock as mock
+
+from marvin_titanic_engine.prediction import Predictor
+
+
+class TestPredictor:
+    def test_execute(self, mocked_params):
+
+        model_mocked = {
+            "rf": mock.MagicMock(),
+            "svm": mock.MagicMock()
+        }
+
+        ac = Predictor(model=model_mocked)
+        ac.execute(input_message="fake message", params=mocked_params)
+
+        model_mocked["rf"].predict.assert_called_once()
+        model_mocked["svm"].predict.assert_called_once()
diff --git a/kaggle-titanic-engine/tests/training/test_metrics_evaluator.py b/kaggle-titanic-engine/tests/training/test_metrics_evaluator.py
new file mode 100644
index 0000000..386f833
--- /dev/null
+++ b/kaggle-titanic-engine/tests/training/test_metrics_evaluator.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+try:
+    import mock
+
+except ImportError:
+    import unittest.mock as mock
+
+import pandas as pd
+from marvin_titanic_engine.training import MetricsEvaluator
+
+
+@mock.patch('marvin_titanic_engine.training.metrics_evaluator.metrics.confusion_matrix')
+@mock.patch('marvin_titanic_engine.training.metrics_evaluator.metrics.classification_report')
+def test_execute(report_mocked, matrix_mocked, mocked_params):
+
+    test_dataset = {
+        "X_test": pd.DataFrame({'Sex': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}),
+        "y_test": pd.DataFrame({'Sex': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}),
+        "X_train": pd.DataFrame({'Sex': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}),
+        "y_train": pd.DataFrame({'Sex': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}),
+        "sss": mock.MagicMock()
+    }
+
+    mocked_params = {
+        "pred_cols": ["Sex", "B"],
+        "dep_var": "C"
+    }
+
+    model_mocked = {
+        # "model_type": "test_type",
+        "test": mock.MagicMock(),
+        "rf": mock.MagicMock()
+    }
+
+    ac = MetricsEvaluator(model=model_mocked, dataset=test_dataset)
+    ac.execute(params=mocked_params)
+
+    report_mocked.assert_called()
+    matrix_mocked.assert_called()
+    model_mocked["test"].predict.assert_called_once()
diff --git a/kaggle-titanic-engine/tests/training/test_trainer.py b/kaggle-titanic-engine/tests/training/test_trainer.py
new file mode 100644
index 0000000..6dbf28a
--- /dev/null
+++ b/kaggle-titanic-engine/tests/training/test_trainer.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+try:
+    import mock
+
+except ImportError:
+    import unittest.mock as mock
+
+import pandas as pd
+from sklearn.model_selection import StratifiedShuffleSplit
+from marvin_titanic_engine.training import Trainer
+
+
+@mock.patch('marvin_titanic_engine.training.trainer.round')
+@mock.patch('marvin_titanic_engine.training.trainer.GridSearchCV')
+def test_execute(grid_mocked, round_mocked, mocked_params):
+
+    test_dataset = {
+        "X_train": pd.DataFrame({'Sex': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}),
+        "y_train": pd.DataFrame({'Sex': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}),
+        "sss": mock.MagicMock()
+    }
+
+    mocked_params = {
+        "pred_cols": ["Sex", "B"],
+        "dep_var": "C",
+        "svm": [
+            {"C": [1, 10, 100], "gamma": [0.01, 0.001], "kernel": ["linear"]},
+            {"C": [1, 10, 100], "gamma": [0.01, 0.001], "kernel": ["rbf"]}
+        ],
+        "rf": {
+            "max_depth": [3],
+            "random_state": [0],
+            "min_samples_split": [2],
+            "min_samples_leaf": [1],
+            "n_estimators": [20],
+            "bootstrap": [True, False],
+            "criterion": ["gini", "entropy"]
+        }
+    }
+
+    ac = Trainer(dataset=test_dataset)
+    ac.execute(params=mocked_params)
+
+    grid_mocked.assert_called()
+    round_mocked.assert_called()
diff --git a/kaggle-titanic-engine/tox.ini b/kaggle-titanic-engine/tox.ini
new file mode 100644
index 0000000..f29e9f6
--- /dev/null
+++ b/kaggle-titanic-engine/tox.ini
@@ -0,0 +1,8 @@
+[tox]
+envlist = py27
+
+[testenv]
+deps=pytest
+     pytest-cov
+     mock
+commands=py.test --cov={envsitepackagesdir}/marvin_titanic_engine --cov-report html --cov-report xml {posargs}
\ No newline at end of file
diff --git a/mnist-keras-engine/Makefile b/mnist-keras-engine/Makefile
index c8f6194..8ea77ce 100644
--- a/mnist-keras-engine/Makefile
+++ b/mnist-keras-engine/Makefile
@@ -29,7 +29,7 @@
 	@echo "        Runs the docker run command with marvin env default parameters."
 
 marvin:
-	pip install -e . --process-dependency-links
+	pip install -e ".[testing]" --process-dependency-links
 	marvin --help
 
 update:
diff --git a/mnist-keras-engine/setup.py b/mnist-keras-engine/setup.py
index a5aae77..5dab442 100644
--- a/mnist-keras-engine/setup.py
+++ b/mnist-keras-engine/setup.py
@@ -5,6 +5,15 @@
 from setuptools.command.test import test as TestCommand
 
 
+REQUIREMENT_TESTS = [
+    'pytest>=2.6.4',
+    'pytest-cov>=1.8.1',
+    'mock>=2.0.0',
+    'virtualenv>=15.0.1',
+    'tox>=2.2.0'
+]
+
+
 def _get_version():
     """Return the project version from VERSION file."""
 
@@ -82,13 +91,10 @@
         'opencv-python==3.4.0.12'
     ],
     dependency_links=['git+https://github.com/marvin-ai/marvin-python-toolbox.git/@master#egg=marvin_python_toolbox-0'],
-    tests_require=[
-        'pytest>=2.6.4',
-        'pytest-cov>=1.8.1',
-        'mock>=2.0.0',
-        'virtualenv>=15.0.1',
-        'tox>=2.2.0',
-    ],
+    tests_require=REQUIREMENT_TESTS,
+    extras_require={
+        'testing': REQUIREMENT_TESTS,
+    },
     cmdclass={
         'test': Tox,
     },
diff --git a/nlp-ner-engine/Makefile b/nlp-ner-engine/Makefile
index 0b4cdb0..9533727 100644
--- a/nlp-ner-engine/Makefile
+++ b/nlp-ner-engine/Makefile
@@ -29,7 +29,7 @@
 	@echo "        Runs the docker run command with marvin env default parameters."
 
 marvin:
-	pip install -e . --process-dependency-links
+	pip install -e ".[testing]" --process-dependency-links
 	marvin --help
 
 update:
diff --git a/nlp-ner-engine/setup.py b/nlp-ner-engine/setup.py
index 26c4fff..845e26d 100644
--- a/nlp-ner-engine/setup.py
+++ b/nlp-ner-engine/setup.py
@@ -5,6 +5,15 @@
 from setuptools.command.test import test as TestCommand
 
 
+REQUIREMENT_TESTS = [
+    'pytest>=2.6.4',
+    'pytest-cov>=1.8.1',
+    'mock>=2.0.0',
+    'virtualenv>=15.0.1',
+    'tox>=2.2.0'
+]
+
+
 def _get_version():
     """Return the project version from VERSION file."""
 
@@ -77,13 +86,10 @@
         'nltk==3.2.5',
         'sklearn-crfsuite==0.3.6',
     ],
-    tests_require=[
-        'pytest>=2.6.4',
-        'pytest-cov>=1.8.1',
-        'mock>=2.0.0',
-        'virtualenv>=15.0.1',
-        'tox>=2.2.0',
-    ],
+    tests_require=REQUIREMENT_TESTS,
+    extras_require={
+        'testing': REQUIREMENT_TESTS,
+    },
     cmdclass={
         'test': Tox,
     },
diff --git a/product-classifier-engine/Makefile b/product-classifier-engine/Makefile
index 6184f89..9d1ff1c 100644
--- a/product-classifier-engine/Makefile
+++ b/product-classifier-engine/Makefile
@@ -29,7 +29,7 @@
 	@echo "        Runs the docker run command with marvin env default parameters."
 
 marvin:
-	pip install -e . --process-dependency-links
+	pip install -e ".[testing]" --process-dependency-links
 	marvin --help
 
 update:
diff --git a/product-classifier-engine/setup.py b/product-classifier-engine/setup.py
index 5b16c4f..544dfac 100644
--- a/product-classifier-engine/setup.py
+++ b/product-classifier-engine/setup.py
@@ -5,6 +5,15 @@
 from setuptools.command.test import test as TestCommand
 
 
+REQUIREMENT_TESTS = [
+    'pytest>=2.6.4',
+    'pytest-cov>=1.8.1',
+    'mock>=2.0.0',
+    'virtualenv>=15.0.1',
+    'tox>=2.2.0'
+]
+
+
 def _get_version():
     """Return the project version from VERSION file."""
 
@@ -76,13 +85,10 @@
         'Fabric==1.14.0',
     ],
     dependency_links=['git+https://github.com/marvin-ai/marvin-python-toolbox.git/@master#egg=marvin_python_toolbox-0'],
-    tests_require=[
-        'pytest>=2.6.4',
-        'pytest-cov>=1.8.1',
-        'mock>=2.0.0',
-        'virtualenv>=15.0.1',
-        'tox>=2.2.0',
-    ],
+    tests_require=REQUIREMENT_TESTS,
+    extras_require={
+        'testing': REQUIREMENT_TESTS,
+    },
     cmdclass={
         'test': Tox,
     },
diff --git a/sms-spam-engine/Makefile b/sms-spam-engine/Makefile
index c45f10d..0a68888 100644
--- a/sms-spam-engine/Makefile
+++ b/sms-spam-engine/Makefile
@@ -29,7 +29,7 @@
 	@echo "        Runs the docker run command with marvin env default parameters."
 
 marvin:
-	pip install -e . --process-dependency-links
+	pip install -e ".[testing]" --process-dependency-links
 	marvin --help
 
 update:
diff --git a/sms-spam-engine/setup.py b/sms-spam-engine/setup.py
index b9abb4d..a43196f 100644
--- a/sms-spam-engine/setup.py
+++ b/sms-spam-engine/setup.py
@@ -5,6 +5,15 @@
 from setuptools.command.test import test as TestCommand
 
 
+REQUIREMENT_TESTS = [
+    'pytest>=2.6.4',
+    'pytest-cov>=1.8.1',
+    'mock>=2.0.0',
+    'virtualenv>=15.0.1',
+    'tox>=2.2.0'
+]
+
+
 def _get_version():
     """Return the project version from VERSION file."""
 
@@ -76,13 +85,10 @@
         'Fabric==1.14.0',
     ],
     dependency_links=['git+https://github.com/marvin-ai/marvin-python-toolbox.git/@master#egg=marvin_python_toolbox-0'],
-    tests_require=[
-        'pytest>=2.6.4',
-        'pytest-cov>=1.8.1',
-        'mock>=2.0.0',
-        'virtualenv>=15.0.1',
-        'tox>=2.2.0',
-    ],
+    tests_require=REQUIREMENT_TESTS,
+    extras_require={
+        'testing': REQUIREMENT_TESTS,
+    },
     cmdclass={
         'test': Tox,
     },