diff --git a/src/main/java/neqsim/thermo/phase/PhaseInterface.java b/src/main/java/neqsim/thermo/phase/PhaseInterface.java
index f595ce61a9..0c1a772815 100644
--- a/src/main/java/neqsim/thermo/phase/PhaseInterface.java
+++ b/src/main/java/neqsim/thermo/phase/PhaseInterface.java
@@ -668,20 +668,20 @@ public default double getExessGibbsEnergySymetric() {
 
   /**
    * <p>
-   * getComponent.
+   * Get Component by name.
    * </p>
    *
-   * @param name a {@link java.lang.String} object
+   * @param name Name of component
    * @return a {@link neqsim.thermo.component.ComponentInterface} object
    */
   public ComponentInterface getComponent(String name);
 
   /**
    * <p>
-   * getComponent.
+   * Get Component by index.
    * </p>
    *
-   * @param i a int
+   * @param i Component index
    * @return a {@link neqsim.thermo.component.ComponentInterface} object
    */
   public ComponentInterface getComponent(int i);
diff --git a/src/main/java/neqsim/thermo/system/SystemInterface.java b/src/main/java/neqsim/thermo/system/SystemInterface.java
index 5f1b6b3f69..24144b9153 100644
--- a/src/main/java/neqsim/thermo/system/SystemInterface.java
+++ b/src/main/java/neqsim/thermo/system/SystemInterface.java
@@ -1022,24 +1022,6 @@ public void addPlusFraction(String componentName, double numberOfMoles, double m
    */
   public void resetCharacterisation();
 
-  /**
-   * <p>
-   * Getter for property <code>maxNumberOfPhases</code>.
-   * </p>
-   *
-   * @return a int
-   */
-  public int getMaxNumberOfPhases();
-
-  /**
-   * <p>
-   * Setter for property <code>maxNumberOfPhases</code>.
-   * </p>
-   *
-   * @param maxNumberOfPhases a int
-   */
-  public void setMaxNumberOfPhases(int maxNumberOfPhases);
-
   /**
    * <p>
    * getMixingRuleName.
@@ -1955,7 +1937,7 @@ public double calcBeta()
    * Getter for property <code>numberOfPhases</code>.
    * </p>
    *
-   * @return Number of phases in use
+   * @return Number of phases used
    */
   public int getNumberOfPhases();
 
@@ -1964,10 +1946,28 @@ public double calcBeta()
    * Setter for property <code>numberOfPhases</code>.
    * </p>
    *
-   * @param number Value of number of phases to use to set.
+   * @param number Number of phases to use.
    */
   public void setNumberOfPhases(int number);
 
+  /**
+   * <p>
+   * Getter for property <code>maxNumberOfPhases</code>.
+   * </p>
+   *
+   * @return Gets the maximum allowed number of phases to use.
+   */
+  public int getMaxNumberOfPhases();
+
+  /**
+   * <p>
+   * Setter for property <code>maxNumberOfPhases</code>.
+   * </p>
+   *
+   * @param maxNumberOfPhases The maximum allowed number of phases to use.
+   */
+  public void setMaxNumberOfPhases(int maxNumberOfPhases);
+
   /**
    * <p>
    * getGibbsEnergy.
@@ -1988,32 +1988,37 @@ public double calcBeta()
 
   /**
    * <p>
-   * getComponent.
+   * Getter for property <code>componentNames</code>.
    * </p>
    *
-   * @param name a {@link java.lang.String} object
-   * @return a {@link neqsim.thermo.component.ComponentInterface} object
+   * @return Component names in system.
    */
-  public ComponentInterface getComponent(String name);
+  public String[] getComponentNames();
+
 
   /**
    * <p>
-   * getComponent.
+   * Get component by name.
    * </p>
    *
-   * @param number a int
+   * @param name Name of component
    * @return a {@link neqsim.thermo.component.ComponentInterface} object
    */
-  public ComponentInterface getComponent(int number);
+  public default ComponentInterface getComponent(String name) {
+    return getPhase(0).getComponent(name);
+  }
 
   /**
    * <p>
-   * getNumberOfMoles.
+   * Get component by index.
    * </p>
    *
-   * @return a double
+   * @param i Component index
+   * @return a {@link neqsim.thermo.component.ComponentInterface} object
    */
-  public double getNumberOfMoles();
+  public default ComponentInterface getComponent(int i) {
+    return getPhase(0).getComponent(i);
+  }
 
   /**
    * <p>
@@ -2024,15 +2029,6 @@ public double calcBeta()
    */
   public SystemInterface clone();
 
-  /**
-   * <p>
-   * getComponentNames.
-   * </p>
-   *
-   * @return Component names in system.
-   */
-  public String[] getComponentNames();
-
   /**
    * <p>
    * getdVdPtn.
@@ -2336,18 +2332,31 @@ public double calcBeta()
   public void addGasToLiquid(double fraction);
 
   /**
-   * method to get the total molar flow rate of a fluid.
+   * Getter for property <code>totalNumberOfMoles</code>.
    *
-   * @return molar flow in unit mol/sec
+   * @return Total molar flow rate of fluid in unit mol/sec
    */
   public double getTotalNumberOfMoles();
 
   /**
    * <p>
-   * setTotalNumberOfMoles.
+   * Getter for property <code>numberOfMoles</code>.
+   * </p>
+   *
+   * @return a double
+   * @deprecated Replaced by {@link getTotalNumberOfMoles}
+   */
+  @Deprecated
+  public default double getNumberOfMoles() {
+    return getTotalNumberOfMoles();
+  }
+
+  /**
+   * <p>
+   * Setter for property <code>totalNumberOfMoles</code>.
    * </p>
    *
-   * @param totalNumberOfMoles a double
+   * @param totalNumberOfMoles Total molar flow rate of fluid in unit mol/sec
    */
   public void setTotalNumberOfMoles(double totalNumberOfMoles);
 
diff --git a/src/main/java/neqsim/thermo/system/SystemProperties.java b/src/main/java/neqsim/thermo/system/SystemProperties.java
index ee75eac889..3a7f2858ff 100644
--- a/src/main/java/neqsim/thermo/system/SystemProperties.java
+++ b/src/main/java/neqsim/thermo/system/SystemProperties.java
@@ -13,7 +13,7 @@
 public class SystemProperties {
   private Double[] values;
   private String[] names;
-  /** Constant <code>nCols=(16 * 4) + 6</code> */
+  /** Constant <code>nCols=(16 * 4) + 6</code>. */
   public static final int nCols = (16 * 4) + 6;
 
   /**
@@ -36,7 +36,7 @@ public SystemProperties(SystemInterface fluid) {
     values[k] = fluid.getTemperature("K");
 
     names[++k] = "Mix Mole Percent";
-    values[k] = fluid.getNumberOfMoles() * 100;
+    values[k] = 100.0;
     names[++k] = "Mix Weight Percent";
     values[k] = 100.0;
     names[++k] = "Mix Molar Volume [m3/mol]";
@@ -184,7 +184,7 @@ public SystemProperties(SystemInterface fluid) {
   }
 
   /**
-   * Get property names and values as a map
+   * Get property names and values as a map.
    *
    * @return map of property name and values
    */
@@ -197,7 +197,7 @@ public HashMap<String, Double> getProperties() {
   }
 
   /**
-   * Getter for property values
+   * Getter for property values.
    *
    * @return Systemproperty values
    */
@@ -206,7 +206,7 @@ public Double[] getValues() {
   }
 
   /**
-   * Get names of properties
+   * Get names of properties.
    *
    * @return Array of names of properties
    */
diff --git a/src/main/java/neqsim/thermo/system/SystemThermo.java b/src/main/java/neqsim/thermo/system/SystemThermo.java
index d8e2a63074..822091e35a 100644
--- a/src/main/java/neqsim/thermo/system/SystemThermo.java
+++ b/src/main/java/neqsim/thermo/system/SystemThermo.java
@@ -1307,7 +1307,7 @@ public void addComponent(String componentName, double value, String name, int ph
   @Override
   public void addComponent(int index, double moles) {
     if (index >= getPhase(0).getNumberOfComponents()) {
-      logger.error("componentIndex higher than number of components in database");
+      logger.error("componentIndex higher than number of components in system");
       return;
     }
     setTotalNumberOfMoles(getTotalNumberOfMoles() + moles);
@@ -1322,7 +1322,7 @@ public void addComponent(int index, double moles) {
   @Override
   public void addComponent(int index, double moles, int phaseNumber) {
     if (index >= getPhase(0).getNumberOfComponents()) {
-      logger.error("componentIndex higher than number of components in database");
+      logger.error("componentIndex higher than number of components in system");
       return;
     }
     double k = 1.0;
@@ -1335,6 +1335,7 @@ public void addComponent(int index, double moles, int phaseNumber) {
       }
       phaseArray[phaseIndex[i]].addMolesChemReac(index, moles * k, moles);
     }
+
     setTotalNumberOfMoles(getTotalNumberOfMoles() + moles);
   }
 
@@ -1743,6 +1744,7 @@ public void init(int type, int phase) {
    */
   public void initAnalytic(int type) {
     if (type == 0) {
+      // todo: should actually clear all entries in arrays?
       setNumberOfPhases(getMaxNumberOfPhases());
       for (int i = 0; i < numberOfPhases; i++) {
         phaseType[i] = 0;
@@ -1756,7 +1758,8 @@ public void initAnalytic(int type) {
               phaseType[phaseIndex[i]], beta[phaseIndex[i]]);
         }
       }
-      numberOfPhases = 2;
+      // todo: reduce maxnumberofphases as well? Some sort of multiphase reset here.
+      setNumberOfPhases(2);
     } else if (type == 1) {
       for (int i = 0; i < numberOfPhases; i++) {
         if (isPhase(i)) {
@@ -2410,7 +2413,7 @@ public String[] getComponentNames() {
   @Override
   public void setNumberOfPhases(int number) {
     this.numberOfPhases = number;
-    if (getMaxNumberOfPhases() < numberOfPhases) {
+    if (numberOfPhases > getMaxNumberOfPhases()) {
       setMaxNumberOfPhases(number);
     }
   }
@@ -2818,12 +2821,6 @@ public void setTemperature(double newTemperature, String unit) {
     }
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public double getNumberOfMoles() {
-    return getTotalNumberOfMoles();
-  }
-
   /** {@inheritDoc} */
   @Override
   public void setPhaseType(int phaseToChange, int newPhaseType) {
@@ -4371,20 +4368,6 @@ public int getMixingRule() {
     return mixingRule;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public ComponentInterface getComponent(String name) {
-    return getPhase(0).getComponent(name);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public ComponentInterface getComponent(int number) {
-    return getPhase(0).getComponent(number);
-  }
-
-
-
   /** {@inheritDoc} */
   @Override
   public void orderByDensity() {
diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPflash.java
index 814f1e4fae..a4212cf672 100644
--- a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPflash.java
+++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPflash.java
@@ -324,29 +324,25 @@ public void run() {
     }
 
     if (passedTests || (dgonRT > 0 && tpdx > 0 && tpdy > 0) || Double.isNaN(system.getBeta())) {
-      if (system.checkStability()) {
-        if (stabilityCheck()) {
-          if (system.doMultiPhaseCheck()) {
-            // logger.info("one phase flash is stable - checking multiphase flash....
-            // ");
-            TPmultiflash operation = new TPmultiflash(system, true);
-            operation.run();
-            // commented out by Even Solbraa 6/2-2012k
-            // system.orderByDensity();
-            // system.init(3);
-          }
-          if (solidCheck) {
-            this.solidPhaseFlash();
-          }
-          if (system.isMultiphaseWaxCheck()) {
-            TPmultiflashWAX operation = new TPmultiflashWAX(system, true);
-            operation.run();
-          }
-
-          system.orderByDensity();
-          system.init(1);
-          return;
+      if (system.checkStability() && stabilityCheck()) {
+        if (system.doMultiPhaseCheck()) {
+          // logger.info("one phase flash is stable - checking multiphase flash....");
+          TPmultiflash operation = new TPmultiflash(system, true);
+          operation.run();
+        }
+        if (solidCheck) {
+          this.solidPhaseFlash();
         }
+        if (system.isMultiphaseWaxCheck()) {
+          TPmultiflashWAX operation = new TPmultiflashWAX(system, true);
+          operation.run();
+        }
+
+        system.orderByDensity();
+        system.init(1);
+        // commented out by Even Solbraa 6/2-2012k
+        // system.init(3);
+        return;
       }
     }