public EV1Model convertToDomainObject(EV1FormBackingObject ev1FormBackingObject) {

    // first get the ev1 and group params recalculated
    calculator.recalculateEV1GroupParameters(ev1FormBackingObject);

    EV1Model ev1Model = new EV1Model();
    NumbersList groupValues = new NumbersList();
    ListOfList paramValues = new ListOfList();

    List<NumbersListEntry> listOfGroupVal = new ArrayList<NumbersListEntry>();
    List<ListOfListEntry> listOfGroups = new ArrayList<ListOfListEntry>();

    // fill the param values
    for (int i = 0; i < 10; i++) {
      ListOfListEntry lle = new ListOfListEntry();
      List<NumbersListEntry> listOfParamValues = new ArrayList<NumbersListEntry>();

      lle.setEntryOrder(i);
      NumbersList group = new NumbersList();

      for (int j = 0; j < ev1FormBackingObject.getParameterValues().get(i).size(); j++) {
        NumbersListEntry entry = new NumbersListEntry();
        entry.setEntry(j);
        entry.setValue(ev1FormBackingObject.getParameterValues().get(i).get(j));
        listOfParamValues.add(j, entry);
      }

      group.setNumbersListEntries(listOfParamValues);
      lle.setNumbersList(group);

      listOfGroups.add(i, lle);
    }

    paramValues.setListOfListEntries(listOfGroups);

    // fill the group values

    for (int i = 0; i < 10; i++) {
      NumbersListEntry nle = new NumbersListEntry();
      nle.setEntry(i);
      nle.setValue(ev1FormBackingObject.getmGroupValues().get(i));

      listOfGroupVal.add(i, nle);
    }

    groupValues.setNumbersListEntries(listOfGroupVal);

    ev1Model.setmGroupValues(groupValues);
    ev1Model.setEv1value(ev1FormBackingObject.getEv1Value());
    ev1Model.setmParamValues(paramValues);

    return ev1Model;
  }
  public EV1FormBackingObject convertToFormBackingObject(EV1Model ev1Model) {
    EV1FormBackingObject ev1FormBackingObject = new EV1FormBackingObject(true);

    // filling groupValues
    NumbersList groupValues = ev1Model.getmGroupValues();
    List<NumbersListEntry> listOfEntries = groupValues.getNumbersListEntries();
    List<Double> fboGroupValues = new ArrayList<Double>(); // will store the result

    for (NumbersListEntry nle : listOfEntries) {
      fboGroupValues.add(nle.getEntry(), nle.getValue());
    }
    // filling paramValues
    ListOfList paramValues = ev1Model.getmParamValues();
    List<ListOfListEntry> listOfListEntries = paramValues.getListOfListEntries(); // depth 1
    List<ArrayList<Double>> fboParamValues = new ArrayList<ArrayList<Double>>();

    for (ListOfListEntry lle : listOfListEntries) {
      NumbersList groupOfParams = lle.getNumbersList();
      List<NumbersListEntry> tempListOfEntries = groupOfParams.getNumbersListEntries(); // depth 2
      ArrayList<Double> tempListOfValues = new ArrayList<Double>();
      for (NumbersListEntry nle : tempListOfEntries) {
        tempListOfValues.add(nle.getEntry(), nle.getValue()); // filling temporary list
      }
      fboParamValues.add(lle.getEntryOrder(), tempListOfValues); // putting list on place in list
    }

    ev1FormBackingObject.setEv1Value(ev1Model.getEv1value());
    ev1FormBackingObject.setmGroupValues(fboGroupValues);
    ev1FormBackingObject.setParameterValues(fboParamValues);

    // todo DANGEROUS perhaps causes arithmetic trouble
    // todo
    // todo VERY VERY DANGEROUS :)
    calculator.recalculateEV1GroupParameters(ev1FormBackingObject);

    return ev1FormBackingObject;
  }