diff --git a/.idea/Multiview-Machine-Learning-OMIS.iml b/.idea/Multiview-Machine-Learning-OMIS.iml
index 6711606311e2664bd835f92b5c114681d2e284f5..327f097a397cdcb86929a6e87e2f03c96edf3852 100644
--- a/.idea/Multiview-Machine-Learning-OMIS.iml
+++ b/.idea/Multiview-Machine-Learning-OMIS.iml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module type="PYTHON_MODULE" version="4">
-  <component name="NewModuleRootManager">
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
     <content url="file://$MODULE_DIR$" />
-    <orderEntry type="inheritedJdk" />
+    <orderEntry type="jdk" jdkName="Python 2.7.11 (~/anaconda2/bin/python)" jdkType="Python SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
   <component name="TestRunnerService">
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000000000000000000000000000000000000..96cc43efa6a0885098044e976cd780bb42c68a70
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <resourceExtensions />
+    <wildcardResourcePatterns>
+      <entry name="!?*.java" />
+      <entry name="!?*.form" />
+      <entry name="!?*.class" />
+      <entry name="!?*.groovy" />
+      <entry name="!?*.scala" />
+      <entry name="!?*.flex" />
+      <entry name="!?*.kt" />
+      <entry name="!?*.clj" />
+      <entry name="!?*.aj" />
+    </wildcardResourcePatterns>
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="false">
+        <processorPath useClasspath="true" />
+      </profile>
+    </annotationProcessing>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e7bedf3377d40335424fd605124d4761390218bb
--- /dev/null
+++ b/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+<component name="CopyrightManager">
+  <settings default="" />
+</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9a70f565dd4fc3b16ac2318de4fadecb4a87dd87
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,17 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="ignoredIdentifiers">
+        <list>
+          <option value="Code.MultiView.Mumbo.Mumbo.len" />
+          <option value="Code.MultiView.Mumbo.Mumbo.range" />
+          <option value="Code.MultiView.Mumbo.Mumbo.zip" />
+          <option value="Code.MultiView.Mumbo.Mumbo.int" />
+          <option value="Code.MultiView.Mumbo.Mumbo.attr" />
+          <option value="Code.MultiView.Mumbo.Mumbo.getattr" />
+        </list>
+      </option>
+    </inspection_tool>
+  </profile>
+</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b312839bf2e939fea3ebdef15630a4b33e57caf
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="PROJECT_PROFILE" value="Project Default" />
+    <option name="USE_PROJECT_PROFILE" value="true" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 5f7ced0530cb25681f34d3f9d0808968d276fb72..31eea6ceaa9cd0369a7b9ba66caef8f489e3c061 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.4.3 (/usr/bin/python3.4)" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_3" assert-keyword="false" jdk-15="false" project-jdk-name="Python 2.7.11 (~/anaconda2/bin/python)" project-jdk-type="Python SDK" />
 </project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 4996be3b86c569a0dcd209f3c8ec4ecbc92cba85..075917529dc5b2827566cef4f81011c92ef3028c 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,13 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="AnalysisUIOptions">
+    <option name="SCOPE_TYPE" value="3" />
+  </component>
   <component name="ChangeListManager">
     <list default="true" id="b2cddca2-4818-4b60-b3ce-fb207e328b36" name="Default" comment="">
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Code/MultiView/ExecMultiview.py" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/ModifiedMulticlass.py" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/__init__.py" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Code/MultiView/Mumbo/__init__.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/Multiview-Machine-Learning-OMIS.iml" afterPath="$PROJECT_DIR$/.idea/Multiview-Machine-Learning-OMIS.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/misc.xml" afterPath="$PROJECT_DIR$/.idea/misc.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Code/MultiView/GetMutliviewDb.py" afterPath="$PROJECT_DIR$/Code/MultiView/GetMutliviewDb.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py" afterPath="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py" afterPath="$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py" />
     </list>
     <ignored path="Multiview-Machine-Learning-OMIS.iws" />
     <ignored path=".idea/workspace.xml" />
+    <ignored path=".idea/dataSources.local.xml" />
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="TRACKING_ENABLED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
@@ -16,6 +27,9 @@
     <option name="LAST_RESOLUTION" value="IGNORE" />
   </component>
   <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+  <component name="CoverageDataManager">
+    <SUITE FILE_PATH="coverage/multiview-machine-learning-omis$Mumbo.coverage" NAME="Mumbo Coverage Results" MODIFIED="1459845546865" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/Code/MultiView/Mumbo" />
+  </component>
   <component name="CreatePatchCommitExecutor">
     <option name="PATCH_PATH" value="" />
   </component>
@@ -25,11 +39,11 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="Mumbo.py" pinned="false" current-in-tab="false">
+      <file leaf-file-name="Mumbo.py" pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="117" column="10" selection-start-line="117" selection-start-column="10" selection-end-line="117" selection-end-column="10" />
+            <state vertical-scroll-proportion="0.60912055">
+              <caret line="272" column="0" selection-start-line="272" selection-start-column="0" selection-end-line="272" selection-end-column="0" />
               <folding>
                 <element signature="e#0#18#0" expanded="true" />
               </folding>
@@ -37,13 +51,96 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="DecisionTree.py" pinned="false" current-in-tab="true">
+      <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Code/MultiView/__init__.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/__init__.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="11" column="10" selection-start-line="11" selection-start-column="10" selection-end-line="11" selection-end-column="10" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="DBCrawl.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Code/FeatExtraction/DBCrawl.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="24" column="49" selection-start-line="24" selection-start-column="8" selection-end-line="24" selection-end-column="49" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="GetMutliviewDb.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Code/MultiView/GetMutliviewDb.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="29" column="58" selection-start-line="29" selection-start-column="58" selection-end-line="29" selection-end-column="58" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="ExecMultiview.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Code/MultiView/ExecMultiview.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="15" column="0" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
+              <folding>
+                <element signature="e#0#27#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/__init__.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="0" column="34" selection-start-line="0" selection-start-column="34" selection-end-line="0" selection-end-column="34" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="DecisionTree.py" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.16488549">
-              <caret line="6" column="47" selection-start-line="6" selection-start-column="47" selection-end-line="6" selection-end-column="47" />
+            <state vertical-scroll-proportion="0.0">
+              <caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="ModifiedMulticlass.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/ModifiedMulticlass.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="70" column="0" selection-start-line="70" selection-start-column="0" selection-end-line="70" selection-end-column="0" />
               <folding>
-                <element signature="e#0#24#0" expanded="true" />
+                <element signature="e#1464#1476#0" expanded="true" />
+                <element signature="e#2847#3198#0" expanded="false" />
+                <element signature="e#3238#3543#0" expanded="false" />
+                <element signature="e#3707#4412#0" expanded="false" />
+                <element signature="e#4589#5739#0" expanded="false" />
+                <element signature="e#5926#6407#0" expanded="false" />
+                <element signature="e#6456#6923#0" expanded="false" />
+                <element signature="e#7009#8968#1" expanded="false" />
+                <element signature="e#9023#9078#0" expanded="false" />
+                <element signature="e#16803#20674#0" expanded="false" />
+                <element signature="e#20746#22439#0" expanded="false" />
+                <element signature="e#22640#23628#0" expanded="false" />
               </folding>
             </state>
           </provider>
@@ -61,18 +158,70 @@
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
   </component>
+  <component name="GradleLocalSettings">
+    <option name="externalProjectsViewState">
+      <projects_view />
+    </option>
+  </component>
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py" />
+        <option value="$PROJECT_DIR$/Code/MultiView/ExecMultiview" />
+        <option value="$PROJECT_DIR$/Code/MultiView/Mumbo/__init__.py" />
+        <option value="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/__init__.py" />
+        <option value="$PROJECT_DIR$/Code/MultiView/GetMutliviewDb.py" />
+        <option value="$PROJECT_DIR$/Code/MultiView/ModifiedMulticlass.py" />
         <option value="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py" />
+        <option value="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/ModifiedMulticlass.py" />
+        <option value="$PROJECT_DIR$/Code/MultiView/ExecMultiview.py" />
+        <option value="$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py" />
       </list>
     </option>
   </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" />
+  <component name="JsBuildToolPackageJson" detection-done="true" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+  </component>
   <component name="ProjectFrameBounds">
-    <option name="y" value="25" />
-    <option name="width" value="1280" />
-    <option name="height" value="775" />
+    <option name="x" value="1680" />
+    <option name="y" value="24" />
+    <option name="width" value="1920" />
+    <option name="height" value="1056" />
+  </component>
+  <component name="ProjectInspectionProfilesVisibleTreeState">
+    <entry key="Project Default">
+      <profile-state>
+        <expanded-state>
+          <State>
+            <id />
+          </State>
+          <State>
+            <id>Android Lint</id>
+          </State>
+          <State>
+            <id>Java</id>
+          </State>
+          <State>
+            <id>Numeric issuesJava</id>
+          </State>
+          <State>
+            <id>Probable bugsJava</id>
+          </State>
+          <State>
+            <id>Python</id>
+          </State>
+          <State>
+            <id>WebSocket issues</id>
+          </State>
+        </expanded-state>
+        <selected-state>
+          <State>
+            <id>Android</id>
+          </State>
+        </selected-state>
+      </profile-state>
+    </entry>
   </component>
   <component name="ProjectLevelVcsManager" settingsEditedManually="false">
     <OptionsSetting value="true" id="Add" />
@@ -99,33 +248,31 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
-      <pane id="Scope" />
-      <pane id="Scratches" />
       <pane id="ProjectPane">
         <subPane>
           <PATH>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
             </PATH_ELEMENT>
           </PATH>
           <PATH>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
           </PATH>
           <PATH>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
@@ -135,11 +282,11 @@
           </PATH>
           <PATH>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
@@ -153,11 +300,11 @@
           </PATH>
           <PATH>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
@@ -175,11 +322,11 @@
           </PATH>
           <PATH>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="Multiview-Machine-Learning-OMIS" />
+              <option name="myItemId" value="multiview-machine-learning-omis" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
@@ -201,12 +348,419 @@
           </PATH>
         </subPane>
       </pane>
+      <pane id="PackagesPane" />
+      <pane id="Scratches" />
+      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
     <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="aspect.path.notification.shown" value="true" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
+    <property name="settings.editor.splitter.proportion" value="0.2" />
+  </component>
+  <component name="PyConsoleOptionsProvider">
+    <option name="myPythonConsoleState">
+      <console-settings module-name="Multiview-Machine-Learning-OMIS" is-module-sdk="true">
+        <option name="myUseModuleSdk" value="true" />
+        <option name="myModuleName" value="Multiview-Machine-Learning-OMIS" />
+      </console-settings>
+    </option>
+  </component>
+  <component name="RecentsManager">
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers" />
+    </key>
   </component>
-  <component name="RunManager">
+  <component name="RunManager" selected="Python.Mumbo">
+    <configuration default="false" name="Mumbo" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="$USER_HOME$/anaconda2/bin/python2.7" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/Code/MultiView/Mumbo" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application">
+      <module name="" />
+      <option name="ACTIVITY_CLASS" value="" />
+      <option name="MODE" value="default_activity" />
+      <option name="DEPLOY" value="true" />
+      <option name="ARTIFACT_NAME" value="" />
+      <option name="TARGET_SELECTION_MODE" value="EMULATOR" />
+      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
+      <option name="PREFERRED_AVD" value="" />
+      <option name="USE_COMMAND_LINE" value="true" />
+      <option name="COMMAND_LINE" value="" />
+      <option name="WIPE_USER_DATA" value="false" />
+      <option name="DISABLE_BOOT_ANIMATION" value="false" />
+      <option name="NETWORK_SPEED" value="full" />
+      <option name="NETWORK_LATENCY" value="none" />
+      <option name="CLEAR_LOGCAT" value="false" />
+      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
+      <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
+      <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="0" />
+      <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
+      <option name="SELECTED_CLOUD_DEVICE_CONFIGURATION_ID" value="0" />
+      <option name="SELECTED_CLOUD_DEVICE_PROJECT_ID" value="" />
+      <option name="IS_VALID_CLOUD_MATRIX_SELECTION" value="false" />
+      <option name="INVALID_CLOUD_MATRIX_SELECTION_ERROR" value="" />
+      <option name="IS_VALID_CLOUD_DEVICE_SELECTION" value="false" />
+      <option name="INVALID_CLOUD_DEVICE_SELECTION_ERROR" value="" />
+      <option name="CLOUD_DEVICE_SERIAL_NUMBER" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests">
+      <module name="" />
+      <option name="TESTING_TYPE" value="0" />
+      <option name="INSTRUMENTATION_RUNNER_CLASS" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="PACKAGE_NAME" value="" />
+      <option name="TARGET_SELECTION_MODE" value="EMULATOR" />
+      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
+      <option name="PREFERRED_AVD" value="" />
+      <option name="USE_COMMAND_LINE" value="true" />
+      <option name="COMMAND_LINE" value="" />
+      <option name="WIPE_USER_DATA" value="false" />
+      <option name="DISABLE_BOOT_ANIMATION" value="false" />
+      <option name="NETWORK_SPEED" value="full" />
+      <option name="NETWORK_LATENCY" value="none" />
+      <option name="CLEAR_LOGCAT" value="false" />
+      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
+      <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
+      <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="0" />
+      <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
+      <option name="SELECTED_CLOUD_DEVICE_CONFIGURATION_ID" value="0" />
+      <option name="SELECTED_CLOUD_DEVICE_PROJECT_ID" value="" />
+      <option name="IS_VALID_CLOUD_MATRIX_SELECTION" value="false" />
+      <option name="INVALID_CLOUD_MATRIX_SELECTION_ERROR" value="" />
+      <option name="IS_VALID_CLOUD_DEVICE_SELECTION" value="false" />
+      <option name="INVALID_CLOUD_DEVICE_SELECTION_ERROR" value="" />
+      <option name="CLOUD_DEVICE_SERIAL_NUMBER" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="Application" factoryName="Application">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="ArquillianJUnit" factoryName="">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="arquillianRunConfiguration">
+        <value>
+          <option name="containerStateName" value="" />
+        </value>
+      </option>
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <envs />
+      <patterns />
+      <method />
+    </configuration>
+    <configuration default="true" type="ArquillianTestNG" factoryName="">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="arquillianRunConfiguration">
+        <value>
+          <option name="containerStateName" value="" />
+        </value>
+      </option>
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="SUITE_NAME" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="GROUP_NAME" />
+      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="OUTPUT_DIRECTORY" />
+      <option name="ANNOTATION_TYPE" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <option name="USE_DEFAULT_REPORTERS" value="false" />
+      <option name="PROPERTIES_FILE" />
+      <envs />
+      <properties />
+      <listeners />
+      <method />
+    </configuration>
+    <configuration default="true" type="CucumberJavaRunConfigurationType" factoryName="Cucumber java">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <option name="myFilePath" />
+      <option name="GLUE" />
+      <option name="myNameFilter" />
+      <option name="myGeneratedName" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="TARGET" value="" />
+      <option name="SETTINGS_FILE" value="" />
+      <option name="CUSTOM_SETTINGS" value="false" />
+      <option name="USE_OPTIONS" value="false" />
+      <option name="OPTIONS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="FlashRunConfigurationType" factoryName="Flash App">
+      <option name="BCName" value="" />
+      <option name="IOSSimulatorSdkPath" value="" />
+      <option name="adlOptions" value="" />
+      <option name="airProgramParameters" value="" />
+      <option name="appDescriptorForEmulator" value="Android" />
+      <option name="debugTransport" value="USB" />
+      <option name="debuggerSdkRaw" value="BC SDK" />
+      <option name="emulator" value="NexusOne" />
+      <option name="emulatorAdlOptions" value="" />
+      <option name="fastPackaging" value="true" />
+      <option name="fullScreenHeight" value="0" />
+      <option name="fullScreenWidth" value="0" />
+      <option name="launchUrl" value="false" />
+      <option name="launcherParameters">
+        <LauncherParameters>
+          <option name="browser" value="a7bb68e0-33c0-4d6f-a81a-aac1fdb870c8" />
+          <option name="launcherType" value="OSDefault" />
+          <option name="newPlayerInstance" value="false" />
+          <option name="playerPath" value="/usr/bin/flashplayerdebugger" />
+        </LauncherParameters>
+      </option>
+      <option name="mobileRunTarget" value="Emulator" />
+      <option name="moduleName" value="" />
+      <option name="overriddenMainClass" value="" />
+      <option name="overriddenOutputFileName" value="" />
+      <option name="overrideMainClass" value="false" />
+      <option name="runTrusted" value="true" />
+      <option name="screenDpi" value="0" />
+      <option name="screenHeight" value="0" />
+      <option name="screenWidth" value="0" />
+      <option name="url" value="http://" />
+      <option name="usbDebugPort" value="7936" />
+      <method />
+    </configuration>
+    <configuration default="true" type="FlexUnitRunConfigurationType" factoryName="FlexUnit" appDescriptorForEmulator="Android" class_name="" emulatorAdlOptions="" method_name="" package_name="" scope="Class">
+      <option name="BCName" value="" />
+      <option name="launcherParameters">
+        <LauncherParameters>
+          <option name="browser" value="a7bb68e0-33c0-4d6f-a81a-aac1fdb870c8" />
+          <option name="launcherType" value="OSDefault" />
+          <option name="newPlayerInstance" value="false" />
+          <option name="playerPath" value="/usr/bin/flashplayerdebugger" />
+        </LauncherParameters>
+      </option>
+      <option name="moduleName" value="" />
+      <option name="trusted" value="true" />
+      <method />
+    </configuration>
+    <configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
+      <ExternalSystemSettings>
+        <option name="executionName" />
+        <option name="externalProjectPath" />
+        <option name="externalSystemIdString" value="GRADLE" />
+        <option name="scriptParameters" />
+        <option name="taskDescriptions">
+          <list />
+        </option>
+        <option name="taskNames">
+          <list />
+        </option>
+        <option name="vmOptions" />
+      </ExternalSystemSettings>
+      <method />
+    </configuration>
+    <configuration default="true" type="GrailsRunConfigurationType" factoryName="Grails">
+      <module name="" />
+      <setting name="vmparams" value="" />
+      <setting name="cmdLine" value="run-app" />
+      <setting name="depsClasspath" value="false" />
+      <setting name="passParentEnv" value="true" />
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <setting name="launchBrowser" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <envs />
+      <patterns />
+      <method />
+    </configuration>
+    <configuration default="true" type="JUnitTestDiscovery" factoryName="JUnit Test Discovery" changeList="All">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <envs />
+      <patterns />
+      <method />
+    </configuration>
+    <configuration default="true" type="JarApplication" factoryName="JAR Application">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="Java Scratch" factoryName="Java Scratch">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <option name="SCRATCH_FILE_ID" value="0" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
+      <method />
+    </configuration>
+    <configuration default="true" type="JetRunConfigurationType" factoryName="Kotlin">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="Multiview-Machine-Learning-OMIS" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="KotlinStandaloneScriptRunConfigurationType" factoryName="Kotlin script">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <option name="filePath" />
+      <option name="vmParameters" />
+      <option name="alternativeJrePath" />
+      <option name="programParameters" />
+      <option name="passParentEnvs" value="true" />
+      <option name="workingDirectory" />
+      <option name="isAlternativeJrePathEnabled" value="false" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" working-dir="">
+      <method />
+    </configuration>
+    <configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
     <configuration default="true" type="PythonConfigurationType" factoryName="Python">
       <option name="INTERPRETER_OPTIONS" value="" />
       <option name="PARENT_ENVS" value="true" />
@@ -219,11 +773,136 @@
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
       <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
       <option name="SCRIPT_NAME" value="" />
       <option name="PARAMETERS" value="" />
       <option name="SHOW_COMMAND_LINE" value="false" />
       <method />
     </configuration>
+    <configuration default="true" type="ScalaTestRunConfiguration" factoryName="ScalaTest">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <setting name="path" value="" />
+      <setting name="package" value="" />
+      <setting name="vmparams" value="" />
+      <setting name="params" value="" />
+      <setting name="workingDirectory" value="" />
+      <setting name="searchForTest" value="Across module dependencies" />
+      <setting name="testName" value="" />
+      <setting name="testKind" value="Class" />
+      <setting name="showProgressMessages" value="true" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="Specs2RunConfiguration" factoryName="Specs2">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <setting name="path" value="" />
+      <setting name="package" value="" />
+      <setting name="vmparams" value="" />
+      <setting name="params" value="" />
+      <setting name="workingDirectory" value="" />
+      <setting name="searchForTest" value="Across module dependencies" />
+      <setting name="testName" value="" />
+      <setting name="testKind" value="Class" />
+      <setting name="showProgressMessages" value="true" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="TestNG" factoryName="TestNG">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="SUITE_NAME" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="GROUP_NAME" />
+      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="OUTPUT_DIRECTORY" />
+      <option name="ANNOTATION_TYPE" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <option name="USE_DEFAULT_REPORTERS" value="false" />
+      <option name="PROPERTIES_FILE" />
+      <envs />
+      <properties />
+      <listeners />
+      <method />
+    </configuration>
+    <configuration default="true" type="TestNGTestDiscovery" factoryName="TestNG Test Discovery" changeList="All">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="SUITE_NAME" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="GROUP_NAME" />
+      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" />
+      <option name="OUTPUT_DIRECTORY" />
+      <option name="ANNOTATION_TYPE" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <option name="USE_DEFAULT_REPORTERS" value="false" />
+      <option name="PROPERTIES_FILE" />
+      <envs />
+      <properties />
+      <listeners />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
+      <node-options />
+      <gulpfile />
+      <tasks />
+      <arguments />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
+      <command value="run-script" />
+      <scripts />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
+      <node-options />
+      <working-directory>$PROJECT_DIR$</working-directory>
+      <pass-parent-env>true</pass-parent-env>
+      <envs />
+      <ui>bdd</ui>
+      <extra-mocha-options />
+      <test-kind>DIRECTORY</test-kind>
+      <test-directory />
+      <recursive>false</recursive>
+      <method />
+    </configuration>
+    <configuration default="true" type="osgi.bnd.run" factoryName="Run Launcher">
+      <method />
+    </configuration>
+    <configuration default="true" type="osgi.bnd.run" factoryName="Test Launcher (JUnit)">
+      <method />
+    </configuration>
     <configuration default="true" type="tests" factoryName="Attests">
       <option name="INTERPRETER_OPTIONS" value="" />
       <option name="PARENT_ENVS" value="true" />
@@ -234,6 +913,7 @@
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
       <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
       <option name="SCRIPT_NAME" value="" />
       <option name="CLASS_NAME" value="" />
       <option name="METHOD_NAME" value="" />
@@ -253,6 +933,7 @@
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
       <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
       <option name="SCRIPT_NAME" value="" />
       <option name="CLASS_NAME" value="" />
       <option name="METHOD_NAME" value="" />
@@ -272,6 +953,7 @@
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
       <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
       <option name="SCRIPT_NAME" value="" />
       <option name="CLASS_NAME" value="" />
       <option name="METHOD_NAME" value="" />
@@ -293,6 +975,7 @@
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
       <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
       <option name="SCRIPT_NAME" value="" />
       <option name="CLASS_NAME" value="" />
       <option name="METHOD_NAME" value="" />
@@ -315,6 +998,7 @@
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
       <module name="Multiview-Machine-Learning-OMIS" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
       <option name="SCRIPT_NAME" value="" />
       <option name="CLASS_NAME" value="" />
       <option name="METHOD_NAME" value="" />
@@ -329,6 +1013,34 @@
       <option name="USE_KEYWORD" value="false" />
       <method />
     </configuration>
+    <configuration default="true" type="uTestRunConfiguration" factoryName="utest">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <setting name="path" value="" />
+      <setting name="package" value="" />
+      <setting name="vmparams" value="" />
+      <setting name="params" value="" />
+      <setting name="workingDirectory" value="" />
+      <setting name="searchForTest" value="Across module dependencies" />
+      <setting name="testName" value="" />
+      <setting name="testKind" value="Class" />
+      <setting name="showProgressMessages" value="true" />
+      <envs />
+      <method />
+    </configuration>
+    <list size="1">
+      <item index="0" class="java.lang.String" itemvalue="Python.Mumbo" />
+    </list>
+    <recent_temporary>
+      <list size="1">
+        <item index="0" class="java.lang.String" itemvalue="Python.Mumbo" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="SbtLocalSettings">
+    <option name="externalProjectsViewState">
+      <projects_view />
+    </option>
   </component>
   <component name="ShelveChangesManager" show_recycled="false" />
   <component name="SvnConfiguration">
@@ -340,31 +1052,68 @@
       <created>1459504457506</created>
       <option name="number" value="Default" />
       <updated>1459504457506</updated>
+      <workItem from="1459841651297" duration="4166000" />
+      <workItem from="1459846109835" duration="713000" />
+      <workItem from="1459846850476" duration="8855000" />
     </task>
     <servers />
   </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="13734000" />
+  </component>
   <component name="ToolWindowManager">
-    <frame x="0" y="25" width="1280" height="775" extended-state="6" />
+    <frame x="1680" y="24" width="1920" height="1056" extended-state="6" />
     <editor active="true" />
     <layout>
+      <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18125" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.15478615" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
     </layout>
+    <layout-to-restore>
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18125" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.15478615" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+    </layout-to-restore>
   </component>
   <component name="Vcs.Log.UiProperties">
     <option name="RECENTLY_FILTERED_USER_GROUPS">
@@ -381,36 +1130,310 @@
     <breakpoint-manager />
     <watches-manager />
   </component>
+  <component name="antWorkspaceConfiguration">
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
+    <option name="FILTER_TARGETS" value="false" />
+  </component>
   <component name="editorHistoryManager">
     <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="264" column="41" selection-start-line="264" selection-start-column="11" selection-end-line="264" selection-end-column="41" />
+          <folding>
+            <element signature="e#0#18#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/FeatExtraction/DBCrawl.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="24" column="49" selection-start-line="24" selection-start-column="8" selection-end-line="24" selection-end-column="49" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/GetMutliviewDb.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="30" column="46" selection-start-line="30" selection-start-column="11" selection-end-line="30" selection-end-column="46" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/ExecMultiview.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding>
+            <element signature="e#0#27#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="34" selection-start-line="0" selection-start-column="34" selection-end-line="0" selection-end-column="34" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="9" column="43" selection-start-line="9" selection-start-column="43" selection-end-line="9" selection-end-column="43" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="54" column="24" selection-start-line="54" selection-start-column="24" selection-end-line="54" selection-end-column="24" />
+          <folding>
+            <element signature="e#0#18#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/FeatExtraction/DBCrawl.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="24" column="49" selection-start-line="24" selection-start-column="8" selection-end-line="24" selection-end-column="49" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/GetMutliviewDb.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="9" column="43" selection-start-line="9" selection-start-column="43" selection-end-line="9" selection-end-column="43" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="54" column="24" selection-start-line="54" selection-start-column="24" selection-end-line="54" selection-end-column="24" />
+          <folding>
+            <element signature="e#0#18#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/__init__.py">
       <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0">
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/FeatExtraction/DBCrawl.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="24" column="49" selection-start-line="24" selection-start-column="8" selection-end-line="24" selection-end-column="49" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/GetMutliviewDb.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="9" column="43" selection-start-line="9" selection-start-column="43" selection-end-line="9" selection-end-column="43" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="12" column="10" selection-start-line="12" selection-start-column="10" selection-end-line="12" selection-end-column="10" />
           <folding>
             <element signature="e#0#18#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py">
       <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0">
-          <caret line="117" column="10" selection-start-line="117" selection-start-column="10" selection-end-line="117" selection-end-column="10" />
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding>
             <element signature="e#0#18#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/Code/FeatExtraction/DBCrawl.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="24" column="49" selection-start-line="24" selection-start-column="8" selection-end-line="24" selection-end-column="49" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="11" column="10" selection-start-line="11" selection-start-column="10" selection-end-line="11" selection-end-column="10" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/GetMutliviewDb.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="29" column="58" selection-start-line="29" selection-start-column="58" selection-end-line="29" selection-end-column="58" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="34" selection-start-line="0" selection-start-column="34" selection-end-line="0" selection-end-column="34" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/DecisionTree.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.16488549">
-          <caret line="6" column="47" selection-start-line="6" selection-start-column="47" selection-end-line="6" selection-end-column="47" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Classifiers/ModifiedMulticlass.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="70" column="0" selection-start-line="70" selection-start-column="0" selection-end-line="70" selection-end-column="0" />
+          <folding>
+            <element signature="e#1464#1476#0" expanded="true" />
+            <element signature="e#2847#3198#0" expanded="false" />
+            <element signature="e#3238#3543#0" expanded="false" />
+            <element signature="e#3707#4412#0" expanded="false" />
+            <element signature="e#4589#5739#0" expanded="false" />
+            <element signature="e#5926#6407#0" expanded="false" />
+            <element signature="e#6456#6923#0" expanded="false" />
+            <element signature="e#7009#8968#1" expanded="false" />
+            <element signature="e#9023#9078#0" expanded="false" />
+            <element signature="e#16803#20674#0" expanded="false" />
+            <element signature="e#20746#22439#0" expanded="false" />
+            <element signature="e#22640#23628#0" expanded="false" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/ExecMultiview.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="15" column="0" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
+          <folding>
+            <element signature="e#0#27#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Code/MultiView/Mumbo/Mumbo.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.60912055">
+          <caret line="272" column="0" selection-start-line="272" selection-start-column="0" selection-end-line="272" selection-end-column="0" />
           <folding>
-            <element signature="e#0#24#0" expanded="true" />
+            <element signature="e#0#18#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
   </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ArquillianSettingsConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
 </project>
\ No newline at end of file
diff --git a/Code/MultiView/ExecMultiview.py b/Code/MultiView/ExecMultiview.py
new file mode 100644
index 0000000000000000000000000000000000000000..3e997a544c0a22dc72ee9581952e0ae320ecf2be
--- /dev/null
+++ b/Code/MultiView/ExecMultiview.py
@@ -0,0 +1,15 @@
+import Mumbo.Mumbo as Mumbo
+import GetMutliviewDb as DB
+
+NB_VIEW = 4
+DATASET_LENGTH = 300
+NB_CLASS = 4
+NB_ITER = 50
+classifierName="DecisionTree"
+NB_CORES = 4
+classifierConfig = 3
+
+DATASET, VIEW_DIMENSIONS, CLASS_LABELS = DB.createFakeData(NB_VIEW, DATASET_LENGTH, NB_CLASS)
+bestClassifiers, generalAlphas, bestViews = Mumbo.trainMumbo(DATASET, CLASS_LABELS, NB_CLASS, NB_VIEW, NB_ITER, DATASET_LENGTH, classifierName, NB_CORES, classifierConfig)
+
+predictedLabels = Mumbo.classifyMumbo(DATASET, bestClassifiers, generalAlphas, bestViews, NB_CLASS)
diff --git a/Code/MultiView/GetMutliviewDb.py b/Code/MultiView/GetMutliviewDb.py
index f2aa9cb0adbec25b4103bb095e95fdc9032ef405..a3cb40eadfc0937d4df3433f74bd71840d7affa2 100644
--- a/Code/MultiView/GetMutliviewDb.py
+++ b/Code/MultiView/GetMutliviewDb.py
@@ -1,15 +1,31 @@
 import numpy as np
 
-def getOneViewFromDB(viewName, pathToDB):
-	view = np.genfromtxt(pathToDB + viewName, delimiter=';')
-	return view
-
-def getClassLabels(pathToDB):
-	labels = np.genfromtxt(pathToDB + "ClassLabels.csv", delimiter=';')
-	return labels 
-
-def getDataset(pathToDB, viewNames):
-	dataset = []
-	for viewName in viewNames: 
-		dataset.append(getOneViewFromDB(viewName, pathtoDB))
-	return np.array(dataset)
+
+def getOneViewFromDB(viewName, pathToDB, DBName):
+    view = np.genfromtxt(pathToDB + DBName +"-" + viewName, delimiter=';')
+    return view
+
+
+def getClassLabels(pathToDB, DBName):
+    labels = np.genfromtxt(pathToDB + DBName + "-" + "ClassLabels.csv", delimiter=';')
+    return labels
+
+
+def getDataset(pathToDB, viewNames, DBName):
+    dataset = []
+    for viewName in viewNames:
+        dataset.append(getOneViewFromDB(viewName, pathToDB, DBName))
+    return np.array(dataset)
+
+
+def createFakeData(NB_VIEW, DATASET_LENGTH, NB_CLASS):
+    VIEW_DIMENSIONS = np.random.random_integers(5, 20, NB_VIEW)
+
+    DATA = [
+                        np.array([
+                                     np.random.normal(0.0, 2, viewDimension)
+                                     for i in np.arange(DATASET_LENGTH)])
+                        for viewDimension in VIEW_DIMENSIONS]
+
+    CLASS_LABELS = np.random.random_integers(0, NB_CLASS-1, DATASET_LENGTH)
+    return DATA, VIEW_DIMENSIONS, CLASS_LABELS
\ No newline at end of file
diff --git a/Code/MultiView/Mumbo/Classifiers/DecisionTree.py b/Code/MultiView/Mumbo/Classifiers/DecisionTree.py
index 64d28b6f6a23de2d53d4af1e44b986841b5ca7b6..b0dea346f15f67a9891dc1a7be6836b4d32b62d8 100644
--- a/Code/MultiView/Mumbo/Classifiers/DecisionTree.py
+++ b/Code/MultiView/Mumbo/Classifiers/DecisionTree.py
@@ -1,10 +1,11 @@
 from sklearn import tree
-from sklearn.multiclass import OneVsRestClassifier
-
+# from sklearn.multiclass import OneVsRestClassifier
+from ModifiedMulticlass import OneVsRestClassifier
 
 # Add weights 
 
-def decisionTree(data, labels, arg):
+def DecisionTree(data, labels, arg, weights):
     classifier = OneVsRestClassifier(tree.DecisionTreeClassifier(max_depth=arg))
-    classifier.fit(data, labels)
-    return classifier, classifier.predict(data)
\ No newline at end of file
+    classifier.fit(data, labels, sample_weight=weights)
+    return classifier, classifier.predict(data)
+
diff --git a/Code/MultiView/Mumbo/Classifiers/ModifiedMulticlass.py b/Code/MultiView/Mumbo/Classifiers/ModifiedMulticlass.py
new file mode 100644
index 0000000000000000000000000000000000000000..040342fd9fd542f6087566746e5d10f27e33e895
--- /dev/null
+++ b/Code/MultiView/Mumbo/Classifiers/ModifiedMulticlass.py
@@ -0,0 +1,718 @@
+"""
+Multiclass and multilabel classification strategies
+===================================================
+This module implements multiclass learning algorithms:
+    - one-vs-the-rest / one-vs-all
+    - one-vs-one
+    - error correcting output codes
+The estimators provided in this module are meta-estimators: they require a base
+estimator to be provided in their constructor. For example, it is possible to
+use these estimators to turn a binary classifier or a regressor into a
+multiclass classifier. It is also possible to use these estimators with
+multiclass estimators in the hope that their accuracy or runtime performance
+improves.
+All classifiers in scikit-learn implement multiclass classification; you
+only need to use this module if you want to experiment with custom multiclass
+strategies.
+The one-vs-the-rest meta-classifier also implements a `predict_proba` method,
+so long as such a method is implemented by the base classifier. This method
+returns probabilities of class membership in both the single label and
+multilabel case.  Note that in the multilabel case, probabilities are the
+marginal probability that a given sample falls in the given class. As such, in
+the multilabel case the sum of these probabilities over all possible labels
+for a given sample *will not* sum to unity, as they do in the single label
+case.
+"""
+
+# Author: Mathieu Blondel <mathieu@mblondel.org>
+# Author: Hamzeh Alsalhi <93hamsal@gmail.com>
+#
+# License: BSD 3 clause
+
+import array
+import numpy as np
+import warnings
+import scipy.sparse as sp
+
+from sklearn.base import BaseEstimator, ClassifierMixin, clone, is_classifier
+from sklearn.base import MetaEstimatorMixin, is_regressor
+from sklearn.preprocessing import LabelBinarizer
+from sklearn.metrics.pairwise import euclidean_distances
+from sklearn.utils import check_random_state
+from sklearn.utils.validation import _num_samples
+from sklearn.utils.validation import check_consistent_length
+from sklearn.utils.validation import check_is_fitted
+from sklearn.utils import deprecated
+from sklearn.externals.joblib import Parallel
+from sklearn.externals.joblib import delayed
+
+__all__ = [
+    "OneVsRestClassifier",
+    "OneVsOneClassifier",
+    "OutputCodeClassifier",
+]
+
+
+def _fit_binary(estimator, X, y, classes=None, sample_weight=None):
+    """Fit a single binary estimator."""
+    unique_y = np.unique(y)
+    if len(unique_y) == 1:
+        if classes is not None:
+            if y[0] == -1:
+                c = 0
+            else:
+                c = y[0]
+            warnings.warn("Label %s is present in all training examples." %
+                          str(classes[c]))
+        estimator = _ConstantPredictor().fit(X, unique_y)
+    else:
+        estimator = clone(estimator)
+        estimator.fit(X, y, sample_weight=sample_weight)
+    return estimator
+
+
+def _predict_binary(estimator, X):
+    """Make predictions using a single binary estimator."""
+    if is_regressor(estimator):
+        return estimator.predict(X)
+    try:
+        score = np.ravel(estimator.decision_function(X))
+    except (AttributeError, NotImplementedError):
+        # probabilities of the positive class
+        score = estimator.predict_proba(X)[:, 1]
+    return score
+
+
+def _check_estimator(estimator):
+    """Make sure that an estimator implements the necessary methods."""
+    if (not hasattr(estimator, "decision_function") and
+            not hasattr(estimator, "predict_proba")):
+        raise ValueError("The base estimator should implement "
+                         "decision_function or predict_proba!")
+
+
+@deprecated("fit_ovr is deprecated and will be removed in 0.18."
+            "Use the OneVsRestClassifier instead.")
+def fit_ovr(estimator, X, y, n_jobs=1):
+    """Fit a one-vs-the-rest strategy.
+    Parameters
+    ----------
+    estimator : estimator object
+        An estimator object implementing `fit` and one of `decision_function`
+        or `predict_proba`.
+    X : (sparse) array-like, shape = [n_samples, n_features]
+        Data.
+    y : (sparse) array-like, shape = [n_samples] or [n_samples, n_classes]
+        Multi-class targets. An indicator matrix turns on multilabel
+        classification.
+    Returns
+    -------
+    estimators : list of estimators object
+        The list of fitted estimator.
+    lb : fitted LabelBinarizer
+    """
+    ovr = OneVsRestClassifier(estimator, n_jobs=n_jobs).fit(X, y)
+    return ovr.estimators_, ovr.label_binarizer_
+
+
+@deprecated("predict_ovr is deprecated and will be removed in 0.18."
+            "Use the OneVsRestClassifier instead.")
+def predict_ovr(estimators, label_binarizer, X):
+    """Predict multi-class targets using the one vs rest strategy.
+    Parameters
+    ----------
+    estimators : list of `n_classes` estimators, Estimators used for
+        predictions. The list must be homogeneous with respect to the type of
+        estimators. fit_ovr supplies this list as part of its output.
+    label_binarizer : LabelBinarizer object, Object used to transform
+        multiclass labels to binary labels and vice-versa. fit_ovr supplies
+        this object as part of its output.
+    X : (sparse) array-like, shape = [n_samples, n_features]
+        Data.
+    Returns
+    -------
+    y : (sparse) array-like, shape = [n_samples] or [n_samples, n_classes].
+        Predicted multi-class targets.
+    """
+    e_types = set([type(e) for e in estimators if not
+    isinstance(e, _ConstantPredictor)])
+    if len(e_types) > 1:
+        raise ValueError("List of estimators must contain estimators of the"
+                         " same type but contains types {0}".format(e_types))
+
+    ovr = OneVsRestClassifier(clone(estimators[0]))
+    ovr.estimators_ = estimators
+    ovr.label_binarizer_ = label_binarizer
+
+    return ovr.predict(X)
+
+
+@deprecated("predict_proba_ovr is deprecated and will be removed in 0.18."
+            "Use the OneVsRestClassifier instead.")
+def predict_proba_ovr(estimators, X, is_multilabel):
+    e_types = set([type(e) for e in estimators if not
+    isinstance(e, _ConstantPredictor)])
+    if len(e_types) > 1:
+        raise ValueError("List of estimators must contain estimators of the"
+                         " same type but contains types {0}".format(e_types))
+
+    Y = np.array([e.predict_proba(X)[:, 1] for e in estimators]).T
+
+    if not is_multilabel:
+        # Then, probabilities should be normalized to 1.
+        Y /= np.sum(Y, axis=1)[:, np.newaxis]
+
+    return Y
+
+
+class _ConstantPredictor(BaseEstimator):
+
+    def fit(self, X, y):
+        self.y_ = y
+        return self
+
+    def predict(self, X):
+        check_is_fitted(self, 'y_')
+
+        return np.repeat(self.y_, X.shape[0])
+
+    def decision_function(self, X):
+        check_is_fitted(self, 'y_')
+
+        return np.repeat(self.y_, X.shape[0])
+
+    def predict_proba(self, X):
+        check_is_fitted(self, 'y_')
+
+        return np.repeat([np.hstack([1 - self.y_, self.y_])],
+                         X.shape[0], axis=0)
+
+
+class OneVsRestClassifier(BaseEstimator, ClassifierMixin, MetaEstimatorMixin):
+    """One-vs-the-rest (OvR) multiclass/multilabel strategy
+    Also known as one-vs-all, this strategy consists in fitting one classifier
+    per class. For each classifier, the class is fitted against all the other
+    classes. In addition to its computational efficiency (only `n_classes`
+    classifiers are needed), one advantage of this approach is its
+    interpretability. Since each class is represented by one and one classifier
+    only, it is possible to gain knowledge about the class by inspecting its
+    corresponding classifier. This is the most commonly used strategy for
+    multiclass classification and is a fair default choice.
+    This strategy can also be used for multilabel learning, where a classifier
+    is used to predict multiple labels for instance, by fitting on a 2-d matrix
+    in which cell [i, j] is 1 if sample i has label j and 0 otherwise.
+    In the multilabel learning literature, OvR is also known as the binary
+    relevance method.
+    Read more in the :ref:`User Guide <ovr_classification>`.
+    Parameters
+    ----------
+    estimator : estimator object
+        An estimator object implementing `fit` and one of `decision_function`
+        or `predict_proba`.
+    n_jobs : int, optional, default: 1
+        The number of jobs to use for the computation. If -1 all CPUs are used.
+        If 1 is given, no parallel computing code is used at all, which is
+        useful for debugging. For n_jobs below -1, (n_cpus + 1 + n_jobs) are
+        used. Thus for n_jobs = -2, all CPUs but one are used.
+    Attributes
+    ----------
+    estimators_ : list of `n_classes` estimators
+        Estimators used for predictions.
+    classes_ : array, shape = [`n_classes`]
+        Class labels.
+    label_binarizer_ : LabelBinarizer object
+        Object used to transform multiclass labels to binary labels and
+        vice-versa.
+    multilabel_ : boolean
+        Whether a OneVsRestClassifier is a multilabel classifier.
+    """
+
+    def __init__(self, estimator, n_jobs=1):
+        self.estimator = estimator
+        self.n_jobs = n_jobs
+
+    def fit(self, X, y, sample_weight=None):
+        """Fit underlying estimators.
+        Parameters
+        ----------
+        X : (sparse) array-like, shape = [n_samples, n_features]
+            Data.
+        y : (sparse) array-like, shape = [n_samples] or [n_samples, n_classes]
+            Multi-class targets. An indicator matrix turns on multilabel
+            classification.
+        Returns
+        -------
+        self
+        """
+        # A sparse LabelBinarizer, with sparse_output=True, has been shown to
+        # outpreform or match a dense label binarizer in all cases and has also
+        # resulted in less or equal memory consumption in the fit_ovr function
+        # overall.
+        self.label_binarizer_ = LabelBinarizer(sparse_output=True)
+        Y = self.label_binarizer_.fit_transform(y)
+        Y = Y.tocsc()
+        columns = (col.toarray().ravel() for col in Y.T)
+        # In cases where individual estimators are very fast to train setting
+        # n_jobs > 1 in can results in slower performance due to the overhead
+        # of spawning threads.  See joblib issue #112.
+        self.estimators_ = Parallel(n_jobs=self.n_jobs)(delayed(_fit_binary)(
+                self.estimator, X, column, classes=[
+                    "not %s" % self.label_binarizer_.classes_[i],
+                    self.label_binarizer_.classes_[i]], sample_weight=sample_weight)
+                                                        for i, column in enumerate(columns))
+
+        return self
+
+    def predict(self, X):
+        """Predict multi-class targets using underlying estimators.
+        Parameters
+        ----------
+        X : (sparse) array-like, shape = [n_samples, n_features]
+            Data.
+        Returns
+        -------
+        y : (sparse) array-like, shape = [n_samples] or [n_samples, n_classes].
+            Predicted multi-class targets.
+        """
+        check_is_fitted(self, 'estimators_')
+        if (hasattr(self.estimators_[0], "decision_function") and
+                is_classifier(self.estimators_[0])):
+            thresh = 0
+        else:
+            thresh = .5
+
+        n_samples = _num_samples(X)
+        if self.label_binarizer_.y_type_ == "multiclass":
+            maxima = np.empty(n_samples, dtype=float)
+            maxima.fill(-np.inf)
+            argmaxima = np.zeros(n_samples, dtype=int)
+            for i, e in enumerate(self.estimators_):
+                pred = _predict_binary(e, X)
+                np.maximum(maxima, pred, out=maxima)
+                argmaxima[maxima == pred] = i
+            return self.label_binarizer_.classes_[np.array(argmaxima.T)]
+        else:
+            indices = array.array('i')
+            indptr = array.array('i', [0])
+            for e in self.estimators_:
+                indices.extend(np.where(_predict_binary(e, X) > thresh)[0])
+                indptr.append(len(indices))
+            data = np.ones(len(indices), dtype=int)
+            indicator = sp.csc_matrix((data, indices, indptr),
+                                      shape=(n_samples, len(self.estimators_)))
+            return self.label_binarizer_.inverse_transform(indicator)
+
+    def predict_proba(self, X):
+        """Probability estimates.
+        The returned estimates for all classes are ordered by label of classes.
+        Note that in the multilabel case, each sample can have any number of
+        labels. This returns the marginal probability that the given sample has
+        the label in question. For example, it is entirely consistent that two
+        labels both have a 90% probability of applying to a given sample.
+        In the single label multiclass case, the rows of the returned matrix
+        sum to 1.
+        Parameters
+        ----------
+        X : array-like, shape = [n_samples, n_features]
+        Returns
+        -------
+        T : (sparse) array-like, shape = [n_samples, n_classes]
+            Returns the probability of the sample for each class in the model,
+            where classes are ordered as they are in `self.classes_`.
+        """
+        check_is_fitted(self, 'estimators_')
+        # Y[i,j] gives the probability that sample i has the label j.
+        # In the multi-label case, these are not disjoint.
+        Y = np.array([e.predict_proba(X)[:, 1] for e in self.estimators_]).T
+
+        if len(self.estimators_) == 1:
+            # Only one estimator, but we still want to return probabilities
+            # for two classes.
+            Y = np.concatenate(((1 - Y), Y), axis=1)
+
+        if not self.multilabel_:
+            # Then, probabilities should be normalized to 1.
+            Y /= np.sum(Y, axis=1)[:, np.newaxis]
+        return Y
+
+    def decision_function(self, X):
+        """Returns the distance of each sample from the decision boundary for
+        each class. This can only be used with estimators which implement the
+        decision_function method.
+        Parameters
+        ----------
+        X : array-like, shape = [n_samples, n_features]
+        Returns
+        -------
+        T : array-like, shape = [n_samples, n_classes]
+        """
+        check_is_fitted(self, 'estimators_')
+        if not hasattr(self.estimators_[0], "decision_function"):
+            raise AttributeError(
+                    "Base estimator doesn't have a decision_function attribute.")
+        return np.array([est.decision_function(X).ravel()
+                         for est in self.estimators_]).T
+
+    @property
+    def multilabel_(self):
+        """Whether this is a multilabel classifier"""
+        return self.label_binarizer_.y_type_.startswith('multilabel')
+
+    @property
+    def classes_(self):
+        return self.label_binarizer_.classes_
+
+    @property
+    def coef_(self):
+        check_is_fitted(self, 'estimators_')
+        if not hasattr(self.estimators_[0], "coef_"):
+            raise AttributeError(
+                    "Base estimator doesn't have a coef_ attribute.")
+        coefs = [e.coef_ for e in self.estimators_]
+        if sp.issparse(coefs[0]):
+            return sp.vstack(coefs)
+        return np.vstack(coefs)
+
+    @property
+    def intercept_(self):
+        check_is_fitted(self, 'estimators_')
+        if not hasattr(self.estimators_[0], "intercept_"):
+            raise AttributeError(
+                    "Base estimator doesn't have an intercept_ attribute.")
+        return np.array([e.intercept_.ravel() for e in self.estimators_])
+
+
+def _fit_ovo_binary(estimator, X, y, i, j):
+    """Fit a single binary estimator (one-vs-one)."""
+    cond = np.logical_or(y == i, y == j)
+    y = y[cond]
+    y_binary = np.empty(y.shape, np.int)
+    y_binary[y == i] = 0
+    y_binary[y == j] = 1
+    ind = np.arange(X.shape[0])
+    return _fit_binary(estimator, X[ind[cond]], y_binary, classes=[i, j])
+
+
+@deprecated("fit_ovo is deprecated and will be removed in 0.18."
+            "Use the OneVsOneClassifier instead.")
+def fit_ovo(estimator, X, y, n_jobs=1):
+    ovo = OneVsOneClassifier(estimator, n_jobs=n_jobs).fit(X, y)
+    return ovo.estimators_, ovo.classes_
+
+
+@deprecated("predict_ovo is deprecated and will be removed in 0.18."
+            "Use the OneVsOneClassifier instead.")
+def predict_ovo(estimators, classes, X):
+    """Make predictions using the one-vs-one strategy."""
+
+    e_types = set([type(e) for e in estimators if not
+    isinstance(e, _ConstantPredictor)])
+    if len(e_types) > 1:
+        raise ValueError("List of estimators must contain estimators of the"
+                         " same type but contains types {0}".format(e_types))
+
+    ovo = OneVsOneClassifier(clone(estimators[0]))
+    ovo.estimators_ = estimators
+    ovo.classes_ = classes
+    return ovo.predict(X)
+
+
+class OneVsOneClassifier(BaseEstimator, ClassifierMixin, MetaEstimatorMixin):
+    """One-vs-one multiclass strategy
+    This strategy consists in fitting one classifier per class pair.
+    At prediction time, the class which received the most votes is selected.
+    Since it requires to fit `n_classes * (n_classes - 1) / 2` classifiers,
+    this method is usually slower than one-vs-the-rest, due to its
+    O(n_classes^2) complexity. However, this method may be advantageous for
+    algorithms such as kernel algorithms which don't scale well with
+    `n_samples`. This is because each individual learning problem only involves
+    a small subset of the data whereas, with one-vs-the-rest, the complete
+    dataset is used `n_classes` times.
+    Read more in the :ref:`User Guide <ovo_classification>`.
+    Parameters
+    ----------
+    estimator : estimator object
+        An estimator object implementing `fit` and one of `decision_function`
+        or `predict_proba`.
+    n_jobs : int, optional, default: 1
+        The number of jobs to use for the computation. If -1 all CPUs are used.
+        If 1 is given, no parallel computing code is used at all, which is
+        useful for debugging. For n_jobs below -1, (n_cpus + 1 + n_jobs) are
+        used. Thus for n_jobs = -2, all CPUs but one are used.
+    Attributes
+    ----------
+    estimators_ : list of `n_classes * (n_classes - 1) / 2` estimators
+        Estimators used for predictions.
+    classes_ : numpy array of shape [n_classes]
+        Array containing labels.
+    """
+
+    def __init__(self, estimator, n_jobs=1):
+        self.estimator = estimator
+        self.n_jobs = n_jobs
+
+    def fit(self, X, y):
+        """Fit underlying estimators.
+        Parameters
+        ----------
+        X : (sparse) array-like, shape = [n_samples, n_features]
+            Data.
+        y : array-like, shape = [n_samples]
+            Multi-class targets.
+        Returns
+        -------
+        self
+        """
+        y = np.asarray(y)
+        check_consistent_length(X, y)
+
+        self.classes_ = np.unique(y)
+        n_classes = self.classes_.shape[0]
+        self.estimators_ = Parallel(n_jobs=self.n_jobs)(
+                delayed(_fit_ovo_binary)(
+                        self.estimator, X, y, self.classes_[i], self.classes_[j])
+                for i in range(n_classes) for j in range(i + 1, n_classes))
+
+        return self
+
+    def predict(self, X):
+        """Estimate the best class label for each sample in X.
+        This is implemented as ``argmax(decision_function(X), axis=1)`` which
+        will return the label of the class with most votes by estimators
+        predicting the outcome of a decision for each possible class pair.
+        Parameters
+        ----------
+        X : (sparse) array-like, shape = [n_samples, n_features]
+            Data.
+        Returns
+        -------
+        y : numpy array of shape [n_samples]
+            Predicted multi-class targets.
+        """
+        Y = self.decision_function(X)
+        return self.classes_[Y.argmax(axis=1)]
+
+    def decision_function(self, X):
+        """Decision function for the OneVsOneClassifier.
+        The decision values for the samples are computed by adding the
+        normalized sum of pair-wise classification confidence levels to the
+        votes in order to disambiguate between the decision values when the
+        votes for all the classes are equal leading to a tie.
+        Parameters
+        ----------
+        X : array-like, shape = [n_samples, n_features]
+        Returns
+        -------
+        Y : array-like, shape = [n_samples, n_classes]
+        """
+        check_is_fitted(self, 'estimators_')
+
+        predictions = np.vstack([est.predict(X) for est in self.estimators_]).T
+        confidences = np.vstack([_predict_binary(est, X) for est in self.estimators_]).T
+        return _ovr_decision_function(predictions, confidences,
+                                      len(self.classes_))
+
+
+def _ovr_decision_function(predictions, confidences, n_classes):
+    """Compute a continuous, tie-breaking ovr decision function.
+    It is important to include a continuous value, not only votes,
+    to make computing AUC or calibration meaningful.
+    Parameters
+    ----------
+    predictions : array-like, shape (n_samples, n_classifiers)
+        Predicted classes for each binary classifier.
+    confidences : array-like, shape (n_samples, n_classifiers)
+        Decision functions or predicted probabilities for positive class
+        for each binary classifier.
+    n_classes : int
+        Number of classes. n_classifiers must be
+        ``n_classes * (n_classes - 1 ) / 2``
+    """
+    n_samples = predictions.shape[0]
+    votes = np.zeros((n_samples, n_classes))
+    sum_of_confidences = np.zeros((n_samples, n_classes))
+
+    k = 0
+    for i in range(n_classes):
+        for j in range(i + 1, n_classes):
+            sum_of_confidences[:, i] -= confidences[:, k]
+            sum_of_confidences[:, j] += confidences[:, k]
+            votes[predictions[:, k] == 0, i] += 1
+            votes[predictions[:, k] == 1, j] += 1
+            k += 1
+
+    max_confidences = sum_of_confidences.max()
+    min_confidences = sum_of_confidences.min()
+
+    if max_confidences == min_confidences:
+        return votes
+
+    # Scale the sum_of_confidences to (-0.5, 0.5) and add it with votes.
+    # The motivation is to use confidence levels as a way to break ties in
+    # the votes without switching any decision made based on a difference
+    # of 1 vote.
+    eps = np.finfo(sum_of_confidences.dtype).eps
+    max_abs_confidence = max(abs(max_confidences), abs(min_confidences))
+    scale = (0.5 - eps) / max_abs_confidence
+    return votes + sum_of_confidences * scale
+
+
+@deprecated("fit_ecoc is deprecated and will be removed in 0.18."
+            "Use the OutputCodeClassifier instead.")
+def fit_ecoc(estimator, X, y, code_size=1.5, random_state=None, n_jobs=1):
+    """Fit an error-correcting output-code strategy.
+    Parameters
+    ----------
+    estimator : estimator object
+        An estimator object implementing `fit` and one of `decision_function`
+        or `predict_proba`.
+    code_size : float, optional
+        Percentage of the number of classes to be used to create the code book.
+    random_state : numpy.RandomState, optional
+        The generator used to initialize the codebook. Defaults to
+        numpy.random.
+    Returns
+    --------
+    estimators : list of `int(n_classes * code_size)` estimators
+        Estimators used for predictions.
+    classes : numpy array of shape [n_classes]
+        Array containing labels.
+    code_book_ : numpy array of shape [n_classes, code_size]
+        Binary array containing the code of each class.
+    """
+    ecoc = OutputCodeClassifier(estimator, random_state=random_state,
+                                n_jobs=n_jobs).fit(X, y)
+    return ecoc.estimators_, ecoc.classes_, ecoc.code_book_
+
+
+@deprecated("predict_ecoc is deprecated and will be removed in 0.18."
+            "Use the OutputCodeClassifier instead.")
+def predict_ecoc(estimators, classes, code_book, X):
+    """Make predictions using the error-correcting output-code strategy."""
+    ecoc = OutputCodeClassifier(clone(estimators[0]))
+    ecoc.classes_ = classes
+    ecoc.estimators_ = estimators
+    ecoc.code_book_ = code_book
+
+    return ecoc.predict(X)
+
+
+class OutputCodeClassifier(BaseEstimator, ClassifierMixin, MetaEstimatorMixin):
+    """(Error-Correcting) Output-Code multiclass strategy
+    Output-code based strategies consist in representing each class with a
+    binary code (an array of 0s and 1s). At fitting time, one binary
+    classifier per bit in the code book is fitted.  At prediction time, the
+    classifiers are used to project new points in the class space and the class
+    closest to the points is chosen. The main advantage of these strategies is
+    that the number of classifiers used can be controlled by the user, either
+    for compressing the model (0 < code_size < 1) or for making the model more
+    robust to errors (code_size > 1). See the documentation for more details.
+    Read more in the :ref:`User Guide <ecoc>`.
+    Parameters
+    ----------
+    estimator : estimator object
+        An estimator object implementing `fit` and one of `decision_function`
+        or `predict_proba`.
+    code_size : float
+        Percentage of the number of classes to be used to create the code book.
+        A number between 0 and 1 will require fewer classifiers than
+        one-vs-the-rest. A number greater than 1 will require more classifiers
+        than one-vs-the-rest.
+    random_state : numpy.RandomState, optional
+        The generator used to initialize the codebook. Defaults to
+        numpy.random.
+    n_jobs : int, optional, default: 1
+        The number of jobs to use for the computation. If -1 all CPUs are used.
+        If 1 is given, no parallel computing code is used at all, which is
+        useful for debugging. For n_jobs below -1, (n_cpus + 1 + n_jobs) are
+        used. Thus for n_jobs = -2, all CPUs but one are used.
+    Attributes
+    ----------
+    estimators_ : list of `int(n_classes * code_size)` estimators
+        Estimators used for predictions.
+    classes_ : numpy array of shape [n_classes]
+        Array containing labels.
+    code_book_ : numpy array of shape [n_classes, code_size]
+        Binary array containing the code of each class.
+    References
+    ----------
+    .. [1] "Solving multiclass learning problems via error-correcting output
+       codes",
+       Dietterich T., Bakiri G.,
+       Journal of Artificial Intelligence Research 2,
+       1995.
+    .. [2] "The error coding method and PICTs",
+       James G., Hastie T.,
+       Journal of Computational and Graphical statistics 7,
+       1998.
+    .. [3] "The Elements of Statistical Learning",
+       Hastie T., Tibshirani R., Friedman J., page 606 (second-edition)
+       2008.
+    """
+
+    def __init__(self, estimator, code_size=1.5, random_state=None, n_jobs=1):
+        self.estimator = estimator
+        self.code_size = code_size
+        self.random_state = random_state
+        self.n_jobs = n_jobs
+
+    def fit(self, X, y):
+        """Fit underlying estimators.
+        Parameters
+        ----------
+        X : (sparse) array-like, shape = [n_samples, n_features]
+            Data.
+        y : numpy array of shape [n_samples]
+            Multi-class targets.
+        Returns
+        -------
+        self
+        """
+        if self.code_size <= 0:
+            raise ValueError("code_size should be greater than 0, got {1}"
+                             "".format(self.code_size))
+
+        _check_estimator(self.estimator)
+        random_state = check_random_state(self.random_state)
+
+        self.classes_ = np.unique(y)
+        n_classes = self.classes_.shape[0]
+        code_size_ = int(n_classes * self.code_size)
+
+        # FIXME: there are more elaborate methods than generating the codebook
+        # randomly.
+        self.code_book_ = random_state.random_sample((n_classes, code_size_))
+        self.code_book_[self.code_book_ > 0.5] = 1
+
+        if hasattr(self.estimator, "decision_function"):
+            self.code_book_[self.code_book_ != 1] = -1
+        else:
+            self.code_book_[self.code_book_ != 1] = 0
+
+        classes_index = dict((c, i) for i, c in enumerate(self.classes_))
+
+        Y = np.array([self.code_book_[classes_index[y[i]]]
+                      for i in range(X.shape[0])], dtype=np.int)
+
+        self.estimators_ = Parallel(n_jobs=self.n_jobs)(
+                delayed(_fit_binary)(self.estimator, X, Y[:, i])
+                for i in range(Y.shape[1]))
+
+        return self
+
+    def predict(self, X):
+        """Predict multi-class targets using underlying estimators.
+        Parameters
+        ----------
+        X : (sparse) array-like, shape = [n_samples, n_features]
+            Data.
+        Returns
+        -------
+        y : numpy array of shape [n_samples]
+            Predicted multi-class targets.
+        """
+        check_is_fitted(self, 'estimators_')
+        Y = np.array([_predict_binary(e, X) for e in self.estimators_]).T
+        pred = euclidean_distances(Y, self.code_book_).argmin(axis=1)
+        return self.classes_[pred]
+
diff --git a/Code/MultiView/Mumbo/Classifiers/__init__.py b/Code/MultiView/Mumbo/Classifiers/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..67fe9de36bef451e807afd5bebf524100535612a
--- /dev/null
+++ b/Code/MultiView/Mumbo/Classifiers/__init__.py
@@ -0,0 +1,13 @@
+# from os import listdir
+# from os.path import isfile, join
+# mypath="."
+# modules = [f[:-3] for f in listdir(mypath) if isfile(join(mypath, f)) and f[-3:] == ".py" and f!="__init__.py" ]
+# __all__ = modules
+
+import os
+for module in os.listdir(os.path.dirname(os.path.realpath(__file__))):
+    if module == '__init__.py' or module[-3:] != '.py':
+        continue
+    __import__(module[:-3], locals(), globals())
+del module
+del os
diff --git a/Code/MultiView/Mumbo/Mumbo.py b/Code/MultiView/Mumbo/Mumbo.py
index db1e02134c750c7a4b4f76e1f8dbf6df4fdeb945..8fd0cb7d890eff42c0e3fd0ca95cce5027a9934e 100644
--- a/Code/MultiView/Mumbo/Mumbo.py
+++ b/Code/MultiView/Mumbo/Mumbo.py
@@ -1,7 +1,7 @@
 import numpy as np
 import math
 from joblib import Parallel, delayed
-import Classifers
+from Classifiers import *
 
 # Data shape : ((Views, Examples, Corrdinates))
 
@@ -29,7 +29,7 @@ def initialize(NB_CLASS, NB_VIEW, NB_ITER, DATASET_LENGTH, CLASS_LABELS):
                         ])
     fs = np.zeros((NB_ITER, NB_VIEW, DATASET_LENGTH, NB_CLASS))
     ds = np.zeros((NB_ITER, NB_VIEW, DATASET_LENGTH))
-    edges = np.zeros((NB_ITER, NB_VIEW, DATASET_LENGTH))
+    edges = np.zeros((NB_ITER, NB_VIEW))
     alphas = np.zeros((NB_ITER, NB_VIEW))
     predictions = np.zeros((NB_ITER, NB_VIEW, DATASET_LENGTH))
     generalAlphas = np.zeros(NB_ITER)
@@ -41,7 +41,7 @@ def initialize(NB_CLASS, NB_VIEW, NB_ITER, DATASET_LENGTH, CLASS_LABELS):
 def computeWeights(costMatrices, NB_CLASS, DATASET_LENGTH, iterIndice, 
                     viewIndice, CLASS_LABELS):
     dist = np.sum(costMatrices[iterIndice, viewIndice]) # ATTENTION
-    weights = np.array([costMatrices[iterIndice, viewIndice, 
+    weights = np.array([costMatrices[iterIndice, viewIndice,
                                     exampleIndice, CLASS_LABELS[exampleIndice]]/dist\
                          for exampleIndice in range(DATASET_LENGTH)])
     return weights
@@ -51,30 +51,38 @@ def trainWeakClassifier(classifierName, monoviewDataset, CLASS_LABELS, costMatri
                         NB_CLASS, DATASET_LENGTH, iterIndice, viewIndice, 
                         classifier_config):
     weights = computeWeights(costMatrices, NB_CLASS, DATASET_LENGTH, 
-                            iterIndice, viewIndice)
-    #Train classifier(classifierName, weights, DATASET, CLASS_LABEL, classifier_config)
+                            iterIndice, viewIndice, CLASS_LABELS)
+    classifierMethod=globals()["DecisionTree"].DecisionTree #Permet d'appeler une fonction avec une string
+    classifier, classes = classifierMethod(monoviewDataset, CLASS_LABELS, classifier_config, weights)
     return classifier, classes
 
 
 
-def trainWeakClassifers(classifierName, DATASET, CLASS_LABELS, costMatrices, 
+def trainWeakClassifers(classifierName, DATASET, CLASS_LABELS, costMatrices,
                         NB_CLASS, DATASET_LENGTH, iterIndice, classifier_config,
-                        NB_CORES):
+                        NB_CORES, NB_VIEW):
+    trainedClassifiers = []
+    labelsMatrix = []
     if NB_CORES > NB_VIEW:
         NB_JOBS = NB_VIEW
     else:
         NB_JOBS = NB_CORES
 
-    trainedClassifiers, classesMatrix = Parallel(n_jobs=NB_JOBS)(
+    trainedClassifiersAndLabels = Parallel(n_jobs=NB_JOBS)(
         delayed(trainWeakClassifier)(classifierName, DATASET[viewIndice], CLASS_LABELS, 
                                     costMatrices, NB_CLASS, DATASET_LENGTH, 
                                     iterIndice, viewIndice, classifier_config) 
         for viewIndice in range(NB_VIEW))
-        return trainedClassifiers, classesMatrix
 
+    for (classifier, labelsArray) in trainedClassifiersAndLabels:
+        trainedClassifiers.append(classifier)
+        labelsMatrix.append(labelsArray)
 
-def computeEdge (predictionMatrix, costMatrix):
-    return np.sum(predictionMatrix*costMatrix)
+    return np.array(trainedClassifiers), np.array(labelsMatrix)
+
+
+def computeEdge(predictionMatrix, costMatrix, NB_CLASS):
+    return np.sum(np.array([np.sum(predictionMatrix*costMatrix[:,classIndice]) for classIndice in range(NB_CLASS)]))
 
 
 def computeAlpha(edge):
@@ -131,7 +139,7 @@ def updateCostmatrices(costMatrices, fs, iterIndice, NB_VIEW, DATASET_LENGTH,
         for exampleIndice in range(DATASET_LENGTH):
             for classe in range(NB_CLASS):
                 if classe != CLASS_LABELS[exampleIndice]:
-                    costMatrices[iterIndice, viewIndice, exampleIndice, classe] \
+                    costMatrices[iterIndice+1, viewIndice, exampleIndice, classe] \
                     = math.exp(fs[iterIndice, viewIndice, exampleIndice, classe] - \
                       fs[iterIndice, viewIndice, 
                         exampleIndice, CLASS_LABELS[exampleIndice]])
@@ -142,9 +150,9 @@ def updateCostmatrices(costMatrices, fs, iterIndice, NB_VIEW, DATASET_LENGTH,
     return costMatrices
 
 
-def chooseView(predictions, generalCostMatrix, iterIndice, NB_VIEW):
+def chooseView(predictions, generalCostMatrix, iterIndice, NB_VIEW, NB_CLASS):
     edges = np.array([computeEdge(predictions[iterIndice, viewIndice], 
-                                    generalCostMatrix) \
+                                    generalCostMatrix[iterIndice], NB_CLASS) \
                       for viewIndice in range(NB_VIEW)])
     bestView = np.argmax(edges)
     return bestView, edges[bestView]
@@ -204,7 +212,7 @@ def computeFinalFs(DATASET_LENGTH, NB_CLASS, generalAlphas, predictions,
 
 
 def trainMumbo(DATASET, CLASS_LABELS, NB_CLASS, NB_VIEW, NB_ITER, DATASET_LENGTH,
-                 classifierName, NB_CORES):
+               classifierName, NB_CORES, classifierConfig):
     
     # Initialization
     costMatrices, \
@@ -218,57 +226,62 @@ def trainMumbo(DATASET, CLASS_LABELS, NB_CLASS, NB_VIEW, NB_ITER, DATASET_LENGTH
     # Learning
     for iterIndice in range(NB_ITER):
 
-        classifiers, predictedLabels = trainWeakClassifers(classifierName, 
-                                                            DATASET, 
-                                                            CLASS_LABELS, 
-                                                            costMatrices, 
-                                                            NB_CLASS, 
-                                                            DATASET_LENGTH, 
-                                                            iterIndice, 
-                                                            classifier_config, 
-                                                            NB_CORES)
+
+        classifiers, predictedLabels = trainWeakClassifers(classifierName,
+                                                           DATASET,
+                                                           CLASS_LABELS,
+                                                           costMatrices,
+                                                           NB_CLASS,
+                                                           DATASET_LENGTH,
+                                                           iterIndice,
+                                                           classifierConfig,
+                                                           NB_CORES, NB_VIEW)
+
         predictions[iterIndice] = predictedLabels
-        
+
         for viewIndice in range(NB_VIEW):
-        
+
             edges[iterIndice, viewIndice] = computeEdge(predictions[iterIndice,
-                                                                     viewIndice], 
-                                                        costMatrices[iterIndice+1, 
-                                                                    viewIndice])
-            alphas[iterIndice, viewIndice] = computeAlpha(edges[iterIndice, 
+                                                                    viewIndice],
+                                                        costMatrices[iterIndice+1,
+                                                                     viewIndice], NB_CLASS)
+
+            alphas[iterIndice, viewIndice] = computeAlpha(edges[iterIndice,
                                                                 viewIndice])
-        
-        ds = updateDs(ds, predictions, CLASS_LABELS, NB_VIEW, DATASET_LENGTH, 
-                        NB_CLASS, iterIndice)
-        fs = updateFs(predictions, ds, alphas, fs, iterIndice, NB_VIEW, 
-                        DATASET_LENGTH, NB_CLASS, CLASS_LABELS)
-        costMatrices = updateCostmatrices(costMatrices, fs, iterIndice, 
-                                            NB_VIEW, DATASET_LENGTH, 
-                                            NB_CLASS, CLASS_LABELS)
-        
-        bestView, edge = chooseView(predictions, generalCostMatrix, 
-                                    iterIndice, NB_VIEW)
-        
+
+        ds = updateDs(ds, predictions, CLASS_LABELS, NB_VIEW, DATASET_LENGTH,
+                      NB_CLASS, iterIndice)
+        fs = updateFs(predictions, ds, alphas, fs, iterIndice, NB_VIEW,
+                      DATASET_LENGTH, NB_CLASS, CLASS_LABELS)
+        costMatrices = updateCostmatrices(costMatrices, fs, iterIndice,
+                                          NB_VIEW, DATASET_LENGTH,
+                                          NB_CLASS, CLASS_LABELS)
+
+        bestView, edge = chooseView(predictions, generalCostMatrix,
+                                    iterIndice, NB_VIEW, NB_CLASS)
+
         bestViews[iterIndice] = bestView
         generalAlphas[iterIndice] = computeAlpha(edge)
         bestClassifiers.append(classifiers[bestView])
         generalFs = updateGeneralFs(generalFs, iterIndice, predictions, alphas,
-                                     DATASET_LENGTH, NB_CLASS, bestView, 
-                                     generalAlphas, CLASS_LABELS)
-        generalCostMatrix = updateGeneralCostMatrix(generalCostMatrix, 
-                                                    generalFs, iterIndice, 
-                                                    DATASET_LENGTH, NB_CLASS, 
+                                    DATASET_LENGTH, NB_CLASS, bestView,
+                                    generalAlphas, CLASS_LABELS)
+        generalCostMatrix = updateGeneralCostMatrix(generalCostMatrix,
+                                                    generalFs, iterIndice,
+                                                    DATASET_LENGTH, NB_CLASS,
                                                     CLASS_LABELS)
-    
+
     # finalFs = computeFinalFs(DATASET_LENGTH, NB_CLASS, generalAlphas, predictions, bestViews, CLASS_LABELS, NB_ITER)
-    return bestClassifiers, generalAlphas
+    return bestClassifiers, generalAlphas, bestViews
 
-def classifyMumbo(DATASET, classifiers, alphas, NB_CLASS):
-    DATASET_LENGTH = len(DATASET)
+def classifyMumbo(DATASET, classifiers, alphas, views, NB_CLASS):
+    DATASET_LENGTH = len(DATASET[0])
     predictedLabels = np.zeros(DATASET_LENGTH)
+
     for exampleIndice in range(DATASET_LENGTH):
         votes = np.zeros(NB_CLASS)
-        for classifier, alpha in zip(classifiers, alphas):
-            votes[int(classifier.predict(DATASET[exampleIndice]))]+=alpha
+        for classifier, alpha, view in zip(classifiers, alphas, views):
+            data = np.array([np.array(DATASET[int(view)][exampleIndice])])
+            votes[int(classifier.predict(data))]+=alpha
         predictedLabels[exampleIndice] = np.argmax(votes)
     return predictedLabels
\ No newline at end of file
diff --git a/Code/MultiView/Mumbo/__init__.py b/Code/MultiView/Mumbo/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..b937cb86efd2e73baabbcfcfe235faf8154faa04
--- /dev/null
+++ b/Code/MultiView/Mumbo/__init__.py
@@ -0,0 +1 @@
+__all__ = ["Mumbo", "Classifiers"]
\ No newline at end of file
diff --git a/multiview-machine-learning-omis.iml b/multiview-machine-learning-omis.iml
new file mode 100644
index 0000000000000000000000000000000000000000..ad3c0a365c8cd79b6f3291a01ea24ccdc75c0de0
--- /dev/null
+++ b/multiview-machine-learning-omis.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file