From d357d2b275a4ea785cb8d3c73e01b04e1a08d38c Mon Sep 17 00:00:00 2001
From: "piotr.gawron" <piotr.gawron@uni-new>
Date: Fri, 30 Sep 2016 18:35:56 +0200
Subject: [PATCH] cell designer structures moved to celldesigner module, in
 progress

---
 .../annotators/BiocompendiumAnnotator.java    |    6 +-
 .../services/annotators/ChebiAnnotator.java   |    2 +-
 .../services/annotators/ElementAnnotator.java |    4 +-
 .../services/annotators/EnsemblAnnotator.java |    8 +-
 .../services/annotators/EntrezAnnotator.java  |    2 +-
 .../services/annotators/GoAnnotator.java      |    6 +-
 .../services/annotators/HgncAnnotator.java    |    8 +-
 .../services/annotators/ReconAnnotator.java   |    8 +-
 .../services/annotators/UniprotAnnotator.java |    6 +-
 .../services/ImproperAnnotationsTest.java     |    2 +-
 .../services/MissingAnnotationTest.java       |    2 +-
 .../MissingRequiredAnnotationsTest.java       |    2 +-
 .../services/ModelAnnotatorTest.java          |    4 +-
 .../annotators/ChebiAnnotatorTest.java        |    4 +-
 .../annotators/ElementAnnotatorTest.java      |    4 +-
 .../annotators/EnsemblAnnotatorTest.java      |    4 +-
 .../annotators/EntrezAnnotatorTest.java       |    2 +-
 .../services/annotators/GoAnnotatorTest.java  |    2 +-
 .../annotators/HgncAnnotatorTest.java         |    2 +-
 .../annotators/ReconAnnotatorTest.java        |    2 +-
 .../annotators/UniprotAnnotatorTest.java      |    2 +-
 .../java/lcsb/mapviewer/run/BellExport.java   |    2 +-
 .../lcsb/mapviewer/run/ConsoleConverter.java  |    8 +-
 .../java/lcsb/mapviewer/run/DiabetesTest.java |    6 +-
 .../mapviewer/run/ReactomeComparison.java     |    4 +-
 .../lcsb/mapviewer/run/ReactomeExport.java    |   14 +-
 .../java/lcsb/mapviewer/run/RunOptions.java   |    2 +-
 .../java/lcsb/mapviewer/run/Statistics.java   |    8 +-
 .../run/UnknownReactionInReactome.java        |    2 +-
 .../lcsb/mapviewer/run/VibineSnippet.java     |    2 +-
 .../CellDesignerElementCollection.java        |    9 +-
 .../celldesigner/CellDesignerXmlParser.java   |    4 +-
 .../alias/AbstractAliasXmlParser.java         |    2 +-
 .../alias/CompartmentAliasXmlParser.java      |    2 +-
 .../alias/ComplexAliasXmlParser.java          |    2 +-
 .../alias/SpeciesAliasXmlParser.java          |    4 +-
 .../celldesigner/annotation/NoteField.java    |    4 +-
 .../CompartmentCollectionXmlParser.java       |    2 +-
 .../compartment/CompartmentXmlParser.java     |    2 +-
 .../ProteinCellDesignerAliasConverter.java    |   10 +-
 .../UnknownCellDesignerAliasConverter.java    |   86 +-
 .../reaction/ReactionFromXml.java             |    4 +-
 .../celldesigner/reaction/ReactionToXml.java  |    2 +-
 .../species/AbstractElementXmlParser.java     |    2 +-
 .../species/AntisenseRnaXmlParser.java        |    4 +-
 .../celldesigner/species/GeneXmlParser.java   |    4 +-
 .../species/InternalModelSpeciesData.java     |  428 ++--
 .../celldesigner/species/ProteinMapping.java  |   10 +-
 .../species/ProteinXmlParser.java             |    4 +-
 .../celldesigner/species/RnaXmlParser.java    |    4 +-
 .../species/SpeciesCollection.java            |    2 +-
 .../species/SpeciesCollectionXmlParser.java   |   14 +-
 .../celldesigner/species/SpeciesMapping.java  |   24 +-
 .../species/SpeciesSbmlParser.java            |   26 +-
 .../celldesigner/structure}/AntisenseRna.java |    3 +-
 .../structure}/AntisenseRnaComparator.java    |    3 +-
 .../structure}/AntisenseRnaRegion.java        |    6 +-
 .../celldesigner/structure}/Chemical.java     |    2 +-
 .../celldesigner/structure}/Compartment.java  |    3 +-
 .../structure}/CompartmentComparator.java     |  179 +-
 .../structure}/ComplexSpecies.java            |    3 +-
 .../structure}/ComplexSpeciesComparator.java  |    5 +-
 .../celldesigner/structure}/Degraded.java     |    2 +-
 .../structure}/DegradedComparator.java        |    2 +-
 .../model/celldesigner/structure}/Drug.java   |    2 +-
 .../structure}/DrugComparator.java            |    2 +-
 .../celldesigner/structure}/Element.java      |    5 +-
 .../structure}/ElementComparator.java         |    7 +-
 .../model/celldesigner/structure}/Gene.java   |    3 +-
 .../structure}/GeneComparator.java            |    3 +-
 .../structure}/GenericProtein.java            |    2 +-
 .../model/celldesigner/structure}/Ion.java    |    2 +-
 .../structure}/IonChannelProtein.java         |    2 +-
 .../structure}/IonComparator.java             |    2 +-
 .../structure}/ModificationResidue.java       |    4 +-
 .../celldesigner/structure/Phenotype.java     |   62 +
 .../structure}/PhenotypeComparator.java       |   18 +-
 .../celldesigner/structure}/Protein.java      |    3 +-
 .../structure}/ProteinComparator.java         |    3 +-
 .../structure}/ReceptorProtein.java           |    2 +-
 .../model/celldesigner/structure}/Rna.java    |    3 +-
 .../structure}/RnaComparator.java             |    3 +-
 .../celldesigner/structure}/RnaRegion.java    |    6 +-
 .../structure}/SimpleMolecule.java            |    2 +-
 .../structure}/SimpleMoleculeComparator.java  |    2 +-
 .../celldesigner/structure}/Species.java      |    5 +-
 .../structure}/SpeciesComparator.java         |    3 +-
 .../celldesigner/structure/SpeciesState.java  |    7 -
 .../structure}/TruncatedProtein.java          |    2 +-
 .../celldesigner/structure}/Unknown.java      |    2 +-
 .../structure}/UnknownComparator.java         |    2 +-
 .../celldesigner/types/ModifierTypeUtils.java |    2 +-
 .../CellDesignerXmlParserTest.java            |    8 +-
 .../celldesigner/ComplexParserTests.java      |    2 +-
 .../celldesigner/LayerXmlParserTest.java      |    2 +-
 .../NestedComplexParsingTests.java            |    4 +-
 .../alias/AliasCollectionXmlParserTest.java   |    8 +-
 .../alias/CompartmentAliasXmlParserTest.java  |    4 +-
 .../alias/ComplexAliasXmlParserTest.java      |    4 +-
 .../alias/SpeciesAliasXmlParserTest.java      |    8 +-
 .../annotation/RestAnnotationParserTest.java  |    4 +-
 .../CompartmentCollectionXmlParserTest.java   |    2 +-
 .../compartment/CompartmentXmlParserTest.java |    2 +-
 ...bstractCellDesignerAliasConverterTest.java |    2 +-
 .../IonCellDesignerAliasConverterTest.java    |    2 +-
 .../geometry/ProteinConverterTest.java        |    2 +-
 .../ReactionCollectionXmlParserTest.java      |    2 +-
 .../reaction/ReactionFromXmlTest.java         |    2 +-
 .../reaction/ReactionParserTests.java         |    2 +-
 .../reaction/ReactionToXmlTest.java           |    4 +-
 .../species/AntisenseRnaXmlParserTest.java    |    4 +-
 .../species/ComplexParserTest.java            |    6 +-
 .../species/GeneXmlParserTest.java            |    6 +-
 .../species/InternalModelSpeciesDataTest.java |  100 +-
 .../model/celldesigner/species/ModelMock.java |    6 +-
 .../species/ProteinMappingTest.java           |    2 +-
 .../species/ProteinXmlParserTest.java         |    4 +-
 .../species/RnaXmlParserTest.java             |    2 +-
 .../species/SpeciesCollectionTest.java        |   10 +-
 .../SpeciesCollectionXmlParserTest.java       |   14 +-
 .../species/SpeciesMappingTest.java           |    2 +-
 .../species/SpeciesSbmlParserTest.java        |   34 +-
 .../AntisenseRnaComparatorTest.java           |    6 +-
 .../structure}/AntisenseRnaRegionTest.java    |    4 +-
 .../structure}/AntisenseRnaTest.java          |    5 +-
 .../structure}/CompartmentComparatorTest.java |    2 +-
 .../structure}/CompartmentTest.java           |    4 +-
 .../ComplexSpeciesComparatorTest.java         |   10 +-
 .../structure}/ComplexSpeciesTest.java        |    6 +-
 .../structure}/DegradedComparatorTest.java    |    4 +-
 .../celldesigner/structure}/DegradedTest.java |    4 +-
 .../structure}/DrugComparatorTest.java        |    4 +-
 .../celldesigner/structure}/DrugTest.java     |    4 +-
 .../structure}/ElementComparatorTest.java     |   10 +-
 .../celldesigner/structure}/ElementTest.java  |    7 +-
 .../structure}/GeneComparatorTest.java        |    9 +-
 .../celldesigner/structure}/GeneTest.java     |    6 +-
 .../structure}/GenericProteinTest.java        |    4 +-
 .../structure}/IonChannelProteinTest.java     |    4 +-
 .../structure}/IonComparatorTest.java         |    4 +-
 .../celldesigner/structure}/IonTest.java      |    4 +-
 .../structure}/ModificationResidueTest.java   |  310 +--
 .../structure}/PhenotypeComparatorTest.java   |   39 +-
 .../structure}/PhenotypeTest.java             |   27 +-
 .../structure}/PositionToCompartmentTest.java |   76 +-
 .../structure}/ProteinComparatorTest.java     |   10 +-
 .../celldesigner/structure}/ProteinTest.java  |    7 +-
 .../structure}/ReceptorProteinTest.java       |    4 +-
 .../structure}/RnaComparatorTest.java         |    8 +-
 .../structure}/RnaRegionTest.java             |  270 +--
 .../celldesigner/structure}/RnaTest.java      |  337 +--
 .../SimpleMoleculeComparatorTest.java         |    4 +-
 .../structure}/SimpleMoleculeTest.java        |    4 +-
 .../structure}/SpeciesComparatorTest.java     |   13 +-
 .../structure/SpeciesStateTest.java           |    1 -
 .../celldesigner/structure}/SpeciesTest.java  |    3 +-
 .../structure}/TruncatedProteinTest.java      |    4 +-
 .../structure}/UnknownComparatorTest.java     |    4 +-
 .../celldesigner/structure}/UnknownTest.java  |    4 +-
 .../types/ModifierTypeUtilsTest.java          |    4 +-
 .../model/sbgnml/SbgnmlXmlExporter.java       |    6 +-
 .../model/sbgnml/SbgnmlXmlParser.java         |   26 +-
 .../converter/graphics/AliasConverter.java    |   81 +-
 .../species/AntisenseRnaConverter.java        |   11 +-
 .../graphics/species/GeneConverter.java       |    4 +-
 .../graphics/species/IonConverter.java        |  222 +-
 .../graphics/species/PhenotypeConverter.java  |  146 +-
 .../graphics/species/ProteinConverter.java    |    6 +-
 .../graphics/species/RnaConverter.java        |    9 +-
 .../SBGNNucleicAcidFeatureConverter.java      |   54 +-
 .../species/SimpleMoleculeConverter.java      |   28 +-
 .../graphics/species/UnknownConverter.java    |  140 +-
 .../graphics/NormalImageGeneratorTest.java    |   28 +-
 .../graphics/PdfImageGeneratorTest.java       |   19 +-
 .../placefinder/AllPlaceFinderTest.java       |   15 +-
 .../species/SpeciesConverterTest.java         |   10 +-
 .../converter/ComplexZipConverterTest.java    |    8 +-
 .../CreateChangeFormerSymbolCommand.java      |   98 +-
 .../detailstab/CreateChangeNameCommand.java   |   62 +-
 .../CreateChangeSynonymCommand.java           |   98 +-
 .../gui/detailstab/ElementDetailsPanel.java   |   46 +-
 .../mapviewer/commands/ColorModelCommand.java |    2 +-
 .../mapviewer/commands/SubModelCommand.java   |    2 +-
 .../AddElementFormerSymbolsCommand.java       |    4 +-
 .../AddElementMiriamDataCommand.java          |    2 +-
 .../AddElementPropertyListEntryCommand.java   |  186 +-
 .../properties/AddElementSynonymsCommand.java |    4 +-
 .../ChangeElementFormerSymbolCommand.java     |    6 +-
 .../ChangeElementFormulaCommand.java          |    2 +-
 .../ChangeElementFullNameCommand.java         |    2 +-
 .../ChangeElementMiriamDataCommand.java       |    2 +-
 .../properties/ChangeElementNotesCommand.java |    2 +-
 ...ChangeElementPropertyListEntryCommand.java |  256 +--
 .../ChangeElementSymbolCommand.java           |    2 +-
 .../ChangeElementSynonymCommand.java          |    6 +-
 .../RemoveElementFormerSymbolsCommand.java    |    4 +-
 .../RemoveElementMiriamDataCommand.java       |    4 +-
 ...RemoveElementPropertyListEntryCommand.java |  186 +-
 .../RemoveElementSynonymsCommand.java         |    4 +-
 .../commands/ColorModelCommandTest.java       |    2 +-
 .../commands/CommandTestFunctions.java        |    6 +-
 .../mapviewer/commands/CopyCommandTest.java   |    8 +-
 .../commands/MoveElementsCommandTest.java     |    2 +-
 .../lcsb/mapviewer/model/map/MiriamData.java  |    2 -
 .../lcsb/mapviewer/model/map/MiriamType.java  |    8 -
 .../model/map/agregator/package-info.java     |    5 -
 .../mapviewer/model/map/graph/DataMining.java |  424 ++--
 .../model/map/layout/ColorSchema.java         | 1086 ++++-----
 .../map/layout/alias/AntisenseRnaAlias.java   |   11 -
 .../layout/alias/AntisenseRnaRegionAlias.java |   10 +-
 .../model/map/layout/alias/ChemicalAlias.java |   14 +-
 .../map/layout/alias/CompartmentAlias.java    |   17 -
 .../alias/CompartmentAliasComparator.java     |    2 -
 .../model/map/layout/alias/ComplexAlias.java  |   16 -
 .../model/map/layout/alias/DegradedAlias.java |   10 -
 .../model/map/layout/alias/DrugAlias.java     |    5 -
 .../model/map/layout/alias/GeneAlias.java     |   10 -
 .../map/layout/alias/GenericProteinAlias.java |    9 -
 .../model/map/layout/alias/IonAlias.java      |    6 +-
 .../layout/alias/IonChannelProteinAlias.java  |    5 -
 .../alias/ModificationResidueAlias.java       |    1 -
 .../alias}/ModificationState.java             |  304 +--
 .../map/layout/alias/PhenotypeAlias.java      |    5 -
 .../alias}/PositionToCompartment.java         |  151 +-
 .../model/map/layout/alias/ProteinAlias.java  |   11 -
 .../layout/alias/ReceptorProteinAlias.java    |    5 -
 .../model/map/layout/alias/RnaAlias.java      |    7 +-
 .../map/layout/alias/RnaRegionAlias.java      |    7 +-
 .../map/layout/alias/SimpleMoleculeAlias.java |   10 -
 .../model/map/layout/alias/SpeciesAlias.java  |   14 -
 .../layout/alias/SpeciesAliasComparator.java  |    6 +-
 .../layout/alias/TruncatedProteinAlias.java   |    5 -
 .../model/map/layout/alias/UnknownAlias.java  |    5 -
 .../lcsb/mapviewer/model/map/model/Model.java |    9 +-
 .../model/map/model/ModelComparator.java      |   71 -
 .../mapviewer/model/map/model/ModelData.java  |    9 +-
 .../model/map/model/ModelFullIndexed.java     |   19 +-
 .../model/map/modifier/Catalysis.java         |    3 -
 .../model/map/modifier/Inhibition.java        |    2 -
 .../model/map/modifier/Modulation.java        |    5 +-
 .../map/modifier/PhysicalStimulation.java     |    3 -
 .../mapviewer/model/map/modifier/Trigger.java |    5 +-
 .../model/map/modifier/UnknownCatalysis.java  |    3 -
 .../model/map/modifier/UnknownInhibition.java |    3 -
 .../model/map/reaction/Modifier.java          |    7 +-
 .../mapviewer/model/map/reaction/Product.java |    7 +-
 .../model/map/reaction/Reactant.java          |    7 +-
 .../model/map/reaction/Reaction.java          |    3 +-
 .../model/map/reaction/ReactionNode.java      |   16 +-
 .../map/reaction/ReactionNodeComparator.java  |    2 -
 .../model/map/species/Phenotype.java          |  117 -
 .../map/species/fields/AssociatedElement.java |  150 --
 .../fields/AssociatedElementComparator.java   |   90 -
 .../map/species/fields/package-info.java      |    8 -
 .../model/map/species/package-info.java       |   11 -
 .../modelutils/map/ElementUtils.java          |   31 +-
 .../modelutils/map/RequireAnnotationMap.java  |    8 -
 .../lcsb/mapviewer/model/map/AllMapTests.java |    6 -
 .../mapviewer/model/map/MiriamDataTest.java   |    5 +-
 .../map/agregator/AllAgregatorTests.java      |   13 -
 .../model/map/graph/DataMiningTest.java       |  187 +-
 .../model/map/layout/ColorSchemaTest.java     |   17 +-
 .../map/layout/alias/AliasComparatorTest.java |    3 -
 .../map/layout/alias/AliasGroupTest.java      |    2 -
 .../alias/CompartmentAliasComparatorTest.java |    2 -
 .../layout/alias/CompartmentAliasTest.java    |    7 +-
 .../alias/ComplexAliasComparatorTest.java     |    3 -
 .../map/layout/alias/ComplexAliasTest.java    |    1 -
 .../alias}/ModificationStateTest.java         |   78 +-
 .../alias/SpeciesAliasComparatorTest.java     |   24 +-
 .../map/layout/alias/SpeciesAliasTest.java    |    6 +-
 ...AliasSubmodelConnectionComparatorTest.java |    4 -
 .../model/map/model/ModelComparatorTest.java  |   11 +-
 .../model/map/model/ModelDataTest.java        |    3 -
 .../model/map/model/ModelFullIndexedTest.java |    5 -
 ...ModelSubmodelConnectionComparatorTest.java |    2 -
 .../mapviewer/model/map/model/ModelTest.java  |   11 -
 .../SubmodelConnectionComparatorTest.java     |    2 -
 .../model/map/modifier/CatalysisTest.java     |    2 -
 .../model/map/modifier/InhibitionTest.java    |    1 -
 .../model/map/modifier/ModulationTest.java    |    1 -
 .../map/modifier/PhysicalStimulationTest.java |    1 -
 .../model/map/modifier/TriggerTest.java       |    1 -
 .../map/modifier/UnknownInhibitionTest.java   |    1 -
 .../reaction/NodeOperatorComparatorTest.java  |    8 -
 .../map/reaction/ReactionComparatorTest.java  |    4 -
 .../reaction/ReactionNodeComparatorTest.java  |    5 -
 .../model/map/reaction/ReactionTest.java      |    5 +-
 .../model/map/species/AllSpeciesTests.java    |   42 -
 .../species/fields/AllSpeciesFieldsTests.java |   19 -
 .../AssociatedElementComparatorTest.java      |  111 -
 .../species/fields/AssociatedElementTest.java |   62 -
 .../modelutils/map/ElementUtilsTest.java      |   16 +-
 .../wikipathway/XML/ModelContructor.java      |    8 +-
 .../model/GpmlModificationType.java           |  272 +--
 .../mapviewer/wikipathway/model/State.java    |  516 ++---
 .../wikipathway/XML/StateParserTest.java      |    2 +-
 .../persist/dao/map/graph/DataMiningDao.java  |  110 +-
 .../persist/dao/map/species/SpeciesDao.java   |   42 +-
 .../mapviewer/persist/dao/ProjectDaoTest.java |    6 +-
 .../persist/dao/map/CommentDaoTest.java       |   10 +-
 .../persist/dao/map/LayoutDaoTest.java        |    4 +-
 .../persist/dao/map/ModelDaoTest.java         |   14 +-
 .../dao/map/graph/DataMiningDaoTest.java      |   76 +-
 .../dao/map/layout/alias/AliasDaoTest.java    |    8 +-
 .../dao/map/layout/alias/AliasDaoTest2.java   |    4 +-
 .../dao/map/species/AntisenseRnaTest.java     |    6 +-
 .../persist/dao/user/UserDaoTest.java         |  562 ++---
 .../reactome/utils/DataFormatter.java         |    2 +-
 .../mapviewer/reactome/utils/ElementUtil.java |    2 +-
 .../reactome/utils/ReactionComparator.java    |    2 +-
 .../ComplexAndSimpleEntityComparator.java     |    2 +-
 ...tityWithAccessionedSequenceComparator.java |    2 +-
 .../DrugAndCatalystComparator.java            |    2 +-
 .../GeneAndDefinedSetComparator.java          |    2 +-
 .../GeneAndOtherEntityComparator.java         |    2 +-
 .../comparators/IonAndCatalystComparator.java |    2 +-
 .../comparators/IonAndComplexComparator.java  |    2 +-
 .../IonAndDefinedSetComparator.java           |    2 +-
 ...tityWithAccessionedSequenceComparator.java |    2 +-
 .../IonAndSimpleEntityComparator.java         |    2 +-
 .../utils/comparators/MatchResult.java        |    2 +-
 .../MoleculeAndCatalystComparator.java        |    2 +-
 .../MoleculeAndComplexComparator.java         |    2 +-
 .../MoleculeAndDefinedSetComparator.java      |    2 +-
 ...tityWithAccessionedSequenceComparator.java |    2 +-
 .../MoleculeAndSimpleEntityComparator.java    |    2 +-
 .../utils/comparators/NodeComparator.java     |    2 +-
 .../ProteinAndCandidateSetComparator.java     |    2 +-
 .../ProteinAndCatalystComparator.java         |    2 +-
 .../ProteinAndComplexComparator.java          |    2 +-
 .../ProteinAndDefinedSetComparator.java       |    2 +-
 ...tityWithAccessionedSequenceComparator.java |    2 +-
 .../ProteinAndGenomeEncodedEntity.java        |    2 +-
 .../ProteinAndOtherEntityComparator.java      |    2 +-
 .../ProteinAndPolymerComparator.java          |    2 +-
 .../ProteinAndSimpleEntityComparator.java     |    2 +-
 .../UnknownAndCatalystComparator.java         |    2 +-
 ...knownAndGenomeEncodedEntityComparator.java |    2 +-
 .../services/impl/DataMiningService.java      |    2 +-
 .../services/impl/ExporterService.java        |   34 +-
 .../services/impl/LayoutService.java          | 1952 ++++++++---------
 .../mapviewer/services/impl/ModelService.java |    4 +-
 .../services/impl/ProjectService.java         |    2 +-
 .../services/impl/SearchService.java          |   22 +-
 .../interfaces/IDataMiningService.java        |    2 +-
 .../services/search/SearchResultFactory.java  |   12 +-
 .../services/search/data/FullAliasView.java   |    4 +-
 .../search/data/FullAliasViewFactory.java     |    8 +-
 .../services/search/db/IDbSearchService.java  |    2 +-
 .../search/db/chemical/ChemicalService.java   |    8 +-
 .../db/chemical/ChemicalViewFactory.java      |    2 +-
 .../search/db/drug/DrugViewFactory.java       |    4 +-
 .../search/db/mirna/MiRNAService.java         |    8 +-
 .../search/db/mirna/MiRNAViewFactory.java     |  238 +-
 .../services/utils/SearchIndexer.java         |    2 +-
 .../services/utils/data/ExportColumn.java     |    2 +-
 .../view/PubmedAnnotatedElementsView.java     |    2 +-
 .../services/impl/DataMiningServiceTest.java  |    6 +-
 .../services/impl/DataMiningServiceTest2.java |    8 +-
 .../services/impl/ExporterServiceTest.java    | 1058 ++++-----
 .../services/impl/LayoutServiceTest2.java     |  494 ++---
 .../services/impl/LogServiceTest.java         |  268 +--
 .../services/impl/ProjectServiceTest.java     |    4 +-
 .../services/impl/SearchServiceTest.java      |   20 +-
 .../search/SearchResultFactoryTest.java       |    4 +-
 .../search/data/FullAliasViewFactoryTest.java |    8 +-
 .../db/chemical/ChemicalServiceTest.java      |  202 +-
 .../search/db/drug/DrugServiceTest.java       |    6 +-
 .../search/db/drug/DrugViewFactoryTest.java   |  310 +--
 .../utils/graph/MissingConnectionDaoTest.java |  206 +-
 .../lcsb/mapviewer/bean/ChemicalBean.java     |    2 +-
 .../java/lcsb/mapviewer/bean/DrugBean.java    |  842 +++----
 .../java/lcsb/mapviewer/bean/ExportBean.java  |   24 +-
 .../lcsb/mapviewer/bean/FeedbackBean.java     |    2 +-
 .../java/lcsb/mapviewer/bean/MiRNABean.java   |    2 +-
 376 files changed, 7148 insertions(+), 8210 deletions(-)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/AntisenseRna.java (93%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/AntisenseRnaComparator.java (91%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species/fields => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/AntisenseRnaRegion.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Chemical.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/agregator => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Compartment.java (93%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/agregator => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/CompartmentComparator.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ComplexSpecies.java (94%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ComplexSpeciesComparator.java (93%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Degraded.java (90%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/DegradedComparator.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Drug.java (90%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/DrugComparator.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Element.java (98%)
 rename {model/src/main/java/lcsb/mapviewer/model/map => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ElementComparator.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Gene.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/GeneComparator.java (91%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/GenericProtein.java (90%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Ion.java (90%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/IonChannelProtein.java (90%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/IonComparator.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species/fields => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ModificationResidue.java (93%)
 create mode 100644 converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Phenotype.java
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/PhenotypeComparator.java (62%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Protein.java (94%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ProteinComparator.java (93%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ReceptorProtein.java (90%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Rna.java (93%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/RnaComparator.java (92%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species/fields => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/RnaRegion.java (91%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/SimpleMolecule.java (91%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/SimpleMoleculeComparator.java (94%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Species.java (94%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/SpeciesComparator.java (96%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/TruncatedProtein.java (90%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/Unknown.java (90%)
 rename {model/src/main/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure}/UnknownComparator.java (92%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/AntisenseRnaComparatorTest.java (87%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species/fields => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/AntisenseRnaRegionTest.java (93%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/AntisenseRnaTest.java (91%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/agregator => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/CompartmentComparatorTest.java (93%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/agregator => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/CompartmentTest.java (91%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ComplexSpeciesComparatorTest.java (90%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ComplexSpeciesTest.java (87%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/DegradedComparatorTest.java (88%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/DegradedTest.java (83%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/DrugComparatorTest.java (86%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/DrugTest.java (83%)
 rename {model/src/test/java/lcsb/mapviewer/model/map => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ElementComparatorTest.java (92%)
 rename {model/src/test/java/lcsb/mapviewer/model/map => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ElementTest.java (89%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/GeneComparatorTest.java (90%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/GeneTest.java (86%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/GenericProteinTest.java (82%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/IonChannelProteinTest.java (82%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/IonComparatorTest.java (86%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/IonTest.java (83%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species/fields => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ModificationResidueTest.java (92%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/PhenotypeComparatorTest.java (62%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/PhenotypeTest.java (57%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species/fields => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/PositionToCompartmentTest.java (80%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ProteinComparatorTest.java (83%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ProteinTest.java (86%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/ReceptorProteinTest.java (82%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/RnaComparatorTest.java (84%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species/fields => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/RnaRegionTest.java (85%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/RnaTest.java (85%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/SimpleMoleculeComparatorTest.java (91%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/SimpleMoleculeTest.java (83%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/SpeciesComparatorTest.java (84%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/SpeciesTest.java (94%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/TruncatedProteinTest.java (82%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/UnknownComparatorTest.java (86%)
 rename {model/src/test/java/lcsb/mapviewer/model/map/species => converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure}/UnknownTest.java (83%)
 delete mode 100644 model/src/main/java/lcsb/mapviewer/model/map/agregator/package-info.java
 rename model/src/main/java/lcsb/mapviewer/model/map/{species/fields => layout/alias}/ModificationState.java (94%)
 rename model/src/main/java/lcsb/mapviewer/model/map/{species/fields => layout/alias}/PositionToCompartment.java (78%)
 delete mode 100644 model/src/main/java/lcsb/mapviewer/model/map/species/Phenotype.java
 delete mode 100644 model/src/main/java/lcsb/mapviewer/model/map/species/fields/AssociatedElement.java
 delete mode 100644 model/src/main/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementComparator.java
 delete mode 100644 model/src/main/java/lcsb/mapviewer/model/map/species/fields/package-info.java
 delete mode 100644 model/src/main/java/lcsb/mapviewer/model/map/species/package-info.java
 delete mode 100644 model/src/test/java/lcsb/mapviewer/model/map/agregator/AllAgregatorTests.java
 rename model/src/test/java/lcsb/mapviewer/model/map/{species/fields => layout/alias}/ModificationStateTest.java (81%)
 delete mode 100644 model/src/test/java/lcsb/mapviewer/model/map/species/AllSpeciesTests.java
 delete mode 100644 model/src/test/java/lcsb/mapviewer/model/map/species/fields/AllSpeciesFieldsTests.java
 delete mode 100644 model/src/test/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementComparatorTest.java
 delete mode 100644 model/src/test/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementTest.java

diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/BiocompendiumAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/BiocompendiumAnnotator.java
index 7fbe3d16ac..5a8ffbd541 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/BiocompendiumAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/BiocompendiumAnnotator.java
@@ -32,13 +32,13 @@ import lcsb.mapviewer.annotation.services.IExternalService;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
 
 /**
  * This class is responsible for connection to Vencata annotation service. The
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ChebiAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ChebiAnnotator.java
index 319445dfea..0ac86df18d 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ChebiAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ChebiAnnotator.java
@@ -20,13 +20,13 @@ import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.annotation.services.IExternalService;
 import lcsb.mapviewer.common.comparator.StringSetComparator;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Chemical;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ChemicalAlias;
-import lcsb.mapviewer.model.map.species.Chemical;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 import uk.ac.ebi.chebi.webapps.chebiWS.client.ChebiWebServiceClient;
 import uk.ac.ebi.chebi.webapps.chebiWS.model.ChebiWebServiceFault_Exception;
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotator.java
index 64717722d7..af1b1e6f62 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotator.java
@@ -7,6 +7,8 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.annotation.cache.CachableInterface;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Chemical;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
@@ -14,8 +16,6 @@ import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ChemicalAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Chemical;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * Interface that allows to annotate {@link AnnotatedObject elements} in the
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java
index ff43691925..e467af1db7 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java
@@ -20,6 +20,10 @@ import lcsb.mapviewer.annotation.services.IExternalService;
 import lcsb.mapviewer.annotation.services.WrongResponseCodeIOException;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
@@ -28,10 +32,6 @@ import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotator.java
index fe76c9d5d7..41c4c55270 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotator.java
@@ -23,6 +23,7 @@ import lcsb.mapviewer.annotation.services.IExternalService;
 import lcsb.mapviewer.annotation.services.WrongResponseCodeIOException;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
@@ -32,7 +33,6 @@ import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotator.java
index e232b856f0..5595d42818 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotator.java
@@ -21,17 +21,17 @@ import lcsb.mapviewer.annotation.services.IExternalService;
 import lcsb.mapviewer.annotation.services.MiriamConnector;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.PhenotypeAlias;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Phenotype;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotator.java
index 2e6170a9bf..b734a9f78f 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotator.java
@@ -15,6 +15,10 @@ import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.annotation.services.IExternalService;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
@@ -24,10 +28,6 @@ import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotator.java
index 8bc93762e7..1d70b5b048 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotator.java
@@ -17,16 +17,16 @@ import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.annotation.services.IExternalService;
 import lcsb.mapviewer.common.EventStorageLoggerAppender;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Chemical;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ChemicalAlias;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Chemical;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotator.java
index ae6cec46b1..6557299e04 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotator.java
@@ -17,15 +17,15 @@ import lcsb.mapviewer.annotation.services.ExternalServiceStatus;
 import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.annotation.services.IExternalService;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ImproperAnnotationsTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ImproperAnnotationsTest.java
index 099744a303..dbad82e990 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ImproperAnnotationsTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ImproperAnnotationsTest.java
@@ -13,10 +13,10 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ImproperAnnotationsTest {
 
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/MissingAnnotationTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/MissingAnnotationTest.java
index 5d3d0aa7e6..fe08330591 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/MissingAnnotationTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/MissingAnnotationTest.java
@@ -7,8 +7,8 @@ import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class MissingAnnotationTest {
 
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/MissingRequiredAnnotationsTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/MissingRequiredAnnotationsTest.java
index c6062c60c0..a743f67faf 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/MissingRequiredAnnotationsTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/MissingRequiredAnnotationsTest.java
@@ -11,9 +11,9 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class MissingRequiredAnnotationsTest {
 
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ModelAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ModelAnnotatorTest.java
index eb03a32992..70e37ad8b3 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ModelAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ModelAnnotatorTest.java
@@ -29,6 +29,8 @@ import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
 import lcsb.mapviewer.annotation.services.annotators.ElementAnnotator;
 import lcsb.mapviewer.annotation.services.annotators.ReconAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
@@ -42,8 +44,6 @@ import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
 import lcsb.mapviewer.model.map.model.SubmodelType;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.persist.dao.map.ModelDao;
 
 public class ModelAnnotatorTest extends AnnotationTestFunctions {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ChebiAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ChebiAnnotatorTest.java
index 5049a7a502..c395af2126 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ChebiAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ChebiAnnotatorTest.java
@@ -25,13 +25,13 @@ import lcsb.mapviewer.annotation.cache.SourceNotAvailable;
 import lcsb.mapviewer.annotation.data.Chebi;
 import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Chemical;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Chemical;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import uk.ac.ebi.chebi.webapps.chebiWS.client.ChebiWebServiceClient;
 import uk.ac.ebi.chebi.webapps.chebiWS.model.ChebiWebServiceFault_Exception;
 import uk.ac.ebi.chebi.webapps.chebiWS.model.DataItem;
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotatorTest.java
index b355a0407f..1d5c8ad097 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotatorTest.java
@@ -11,12 +11,12 @@ import org.junit.Test;
 import lcsb.mapviewer.annotation.AnnotationTestFunctions;
 import lcsb.mapviewer.annotation.cache.CachableInterface;
 import lcsb.mapviewer.annotation.cache.SourceNotAvailable;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.IonAlias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Ion;
 
 public class ElementAnnotatorTest extends AnnotationTestFunctions {
 
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotatorTest.java
index 24dc111f73..d46f769e80 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotatorTest.java
@@ -24,12 +24,12 @@ import lcsb.mapviewer.annotation.cache.WebPageDownloader;
 import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.annotation.services.WrongResponseCodeIOException;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class EnsemblAnnotatorTest extends AnnotationTestFunctions {
 
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotatorTest.java
index 78352367bd..dde266a54c 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotatorTest.java
@@ -28,11 +28,11 @@ import lcsb.mapviewer.annotation.data.EntrezData;
 import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.annotation.services.WrongResponseCodeIOException;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class EntrezAnnotatorTest extends AnnotationTestFunctions {
 
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotatorTest.java
index a14942ea7c..39572ea55b 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotatorTest.java
@@ -25,10 +25,10 @@ import lcsb.mapviewer.annotation.cache.WebPageDownloader;
 import lcsb.mapviewer.annotation.data.Go;
 import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 
 public class GoAnnotatorTest extends AnnotationTestFunctions {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotatorTest.java
index 1739fa2d83..0a774fba1f 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotatorTest.java
@@ -16,11 +16,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import lcsb.mapviewer.annotation.AnnotationTestFunctions;
 import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class HgncAnnotatorTest extends AnnotationTestFunctions {
 
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotatorTest.java
index e4b824ea69..95ba90d632 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotatorTest.java
@@ -21,10 +21,10 @@ import lcsb.mapviewer.annotation.AnnotationTestFunctions;
 import lcsb.mapviewer.annotation.cache.WebPageDownloader;
 import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 
 public class ReconAnnotatorTest extends AnnotationTestFunctions {
 	Logger				 logger	= Logger.getLogger(ReconAnnotatorTest.class);
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotatorTest.java
index 92e67a2fc7..100dca76ee 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotatorTest.java
@@ -19,11 +19,11 @@ import lcsb.mapviewer.annotation.AnnotationTestFunctions;
 import lcsb.mapviewer.annotation.cache.WebPageDownloader;
 import lcsb.mapviewer.annotation.services.ExternalServiceStatusType;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class UniprotAnnotatorTest extends AnnotationTestFunctions {
 
diff --git a/console/src/main/java/lcsb/mapviewer/run/BellExport.java b/console/src/main/java/lcsb/mapviewer/run/BellExport.java
index d280b38887..603295e43e 100644
--- a/console/src/main/java/lcsb/mapviewer/run/BellExport.java
+++ b/console/src/main/java/lcsb/mapviewer/run/BellExport.java
@@ -4,8 +4,8 @@ import lcsb.mapviewer.annotation.services.ModelAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.persist.ApplicationContextLoader;
 import lcsb.mapviewer.persist.DbUtils;
 import lcsb.mapviewer.services.interfaces.IExporterService;
diff --git a/console/src/main/java/lcsb/mapviewer/run/ConsoleConverter.java b/console/src/main/java/lcsb/mapviewer/run/ConsoleConverter.java
index c0b76acea0..9bab0dc4be 100644
--- a/console/src/main/java/lcsb/mapviewer/run/ConsoleConverter.java
+++ b/console/src/main/java/lcsb/mapviewer/run/ConsoleConverter.java
@@ -21,12 +21,14 @@ import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.graphics.PolylineData;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
@@ -37,8 +39,6 @@ import lcsb.mapviewer.model.map.reaction.Modifier;
 import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/console/src/main/java/lcsb/mapviewer/run/DiabetesTest.java b/console/src/main/java/lcsb/mapviewer/run/DiabetesTest.java
index 913b48991f..09c363daa0 100644
--- a/console/src/main/java/lcsb/mapviewer/run/DiabetesTest.java
+++ b/console/src/main/java/lcsb/mapviewer/run/DiabetesTest.java
@@ -12,11 +12,13 @@ import java.util.List;
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
@@ -29,8 +31,6 @@ import lcsb.mapviewer.model.map.reaction.type.NegativeInfluenceReaction;
 import lcsb.mapviewer.model.map.reaction.type.PositiveInfluenceReaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownPositiveInfluenceReaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownTransitionReaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.persist.ApplicationContextLoader;
 
 import org.apache.log4j.Logger;
diff --git a/console/src/main/java/lcsb/mapviewer/run/ReactomeComparison.java b/console/src/main/java/lcsb/mapviewer/run/ReactomeComparison.java
index 74ea907a17..6d6cf330a4 100644
--- a/console/src/main/java/lcsb/mapviewer/run/ReactomeComparison.java
+++ b/console/src/main/java/lcsb/mapviewer/run/ReactomeComparison.java
@@ -17,10 +17,10 @@ import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.persist.ApplicationContextLoader;
 import lcsb.mapviewer.reactome.model.ReactomeDatabaseObject;
 import lcsb.mapviewer.reactome.model.ReactomeReactionlikeEvent;
diff --git a/console/src/main/java/lcsb/mapviewer/run/ReactomeExport.java b/console/src/main/java/lcsb/mapviewer/run/ReactomeExport.java
index 556976542d..e68583c3ce 100644
--- a/console/src/main/java/lcsb/mapviewer/run/ReactomeExport.java
+++ b/console/src/main/java/lcsb/mapviewer/run/ReactomeExport.java
@@ -14,8 +14,13 @@ import java.util.Set;
 
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
@@ -28,11 +33,6 @@ import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.ReactionNode;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.persist.ApplicationContextLoader;
 import lcsb.mapviewer.reactome.model.ReactomeDatabaseObject;
 import lcsb.mapviewer.reactome.utils.DataSourceUpdater;
diff --git a/console/src/main/java/lcsb/mapviewer/run/RunOptions.java b/console/src/main/java/lcsb/mapviewer/run/RunOptions.java
index 394f4238f0..c68686c26e 100644
--- a/console/src/main/java/lcsb/mapviewer/run/RunOptions.java
+++ b/console/src/main/java/lcsb/mapviewer/run/RunOptions.java
@@ -2,7 +2,7 @@ package lcsb.mapviewer.run;
 
 import java.util.List;
 
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
diff --git a/console/src/main/java/lcsb/mapviewer/run/Statistics.java b/console/src/main/java/lcsb/mapviewer/run/Statistics.java
index 90dbec74ed..1448d17aa6 100644
--- a/console/src/main/java/lcsb/mapviewer/run/Statistics.java
+++ b/console/src/main/java/lcsb/mapviewer/run/Statistics.java
@@ -20,14 +20,14 @@ import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.persist.ApplicationContextLoader;
 import lcsb.mapviewer.persist.DbUtils;
 
diff --git a/console/src/main/java/lcsb/mapviewer/run/UnknownReactionInReactome.java b/console/src/main/java/lcsb/mapviewer/run/UnknownReactionInReactome.java
index c0f17f66b1..ba1845afc9 100644
--- a/console/src/main/java/lcsb/mapviewer/run/UnknownReactionInReactome.java
+++ b/console/src/main/java/lcsb/mapviewer/run/UnknownReactionInReactome.java
@@ -19,6 +19,7 @@ import lcsb.mapviewer.commands.CreateHierarchyCommand;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.graphics.MapGenerator;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.ArtifitialCompartmentAlias;
@@ -26,7 +27,6 @@ import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.ReactionNode;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.persist.ApplicationContextLoader;
 import lcsb.mapviewer.reactome.model.ReactomeDatabaseObject;
 import lcsb.mapviewer.reactome.utils.DataFormatter;
diff --git a/console/src/main/java/lcsb/mapviewer/run/VibineSnippet.java b/console/src/main/java/lcsb/mapviewer/run/VibineSnippet.java
index 32f4a07f0f..0d4e197c42 100644
--- a/console/src/main/java/lcsb/mapviewer/run/VibineSnippet.java
+++ b/console/src/main/java/lcsb/mapviewer/run/VibineSnippet.java
@@ -8,7 +8,7 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.reaction.Reaction;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollection.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollection.java
index 2c71b7c21e..186ac05c5e 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollection.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollection.java
@@ -5,11 +5,11 @@ import java.util.List;
 import java.util.Map;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 public class CellDesignerElementCollection {
@@ -44,7 +44,8 @@ public class CellDesignerElementCollection {
 
 	private void addElement(Element element, String id) {
 		if (elementById.get(id) != null) {
-			throw new InvalidArgumentException(eu.getElementTag(element) + "Element with given id alread exists. ID: " + id);
+			throw new InvalidArgumentException(
+					"[" + element.getClass().getSimpleName() + " " + element.getElementId() + "]\t" + "Element with given id alread exists. ID: " + id);
 		}
 		elementById.put(id, element);
 	}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java
index 2623c4cd0c..c672d69e48 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java
@@ -33,9 +33,10 @@ import lcsb.mapviewer.converter.model.celldesigner.reaction.ReactionCollectionXm
 import lcsb.mapviewer.converter.model.celldesigner.reaction.UnknownReactionClassException;
 import lcsb.mapviewer.converter.model.celldesigner.species.InternalModelSpeciesData;
 import lcsb.mapviewer.converter.model.celldesigner.species.SpeciesCollectionXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.InconsistentModelException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
@@ -51,7 +52,6 @@ import lcsb.mapviewer.model.map.layout.graphics.LayerText;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This class is a parser for CellDesigner files. There are two typical use
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AbstractAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AbstractAliasXmlParser.java
index ee9116d558..f32f4b8625 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AbstractAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AbstractAliasXmlParser.java
@@ -8,7 +8,7 @@ import org.w3c.dom.NodeList;
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CommonXmlParser;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 
 /**
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParser.java
index 4768fc6e8d..44a1aafc9c 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParser.java
@@ -10,7 +10,7 @@ import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.species.SpeciesCollection;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.BottomSquareCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.LeftSquareCompartmentAlias;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
index d0b03bcfbc..6325587594 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
@@ -11,6 +11,7 @@ import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
 import lcsb.mapviewer.converter.model.celldesigner.structure.View;
 import lcsb.mapviewer.model.map.layout.alias.ArtifitialCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
@@ -18,7 +19,6 @@ import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelData;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 
 /**
  * Parser of CellDesigner xml used for parsing complex aliases. Important: Only
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
index 59e38e69ef..4fb76150be 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
@@ -7,6 +7,8 @@ import org.w3c.dom.NodeList;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.converter.model.celldesigner.structure.View;
 import lcsb.mapviewer.model.map.layout.alias.ArtifitialCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
@@ -14,8 +16,6 @@ import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelData;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * Parser of CellDesigner xml used for parsing SpeciesAlias.
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/annotation/NoteField.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/annotation/NoteField.java
index b654b06476..f64ef822ac 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/annotation/NoteField.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/annotation/NoteField.java
@@ -1,10 +1,10 @@
 package lcsb.mapviewer.converter.model.celldesigner.annotation;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * Describes structural information that appears in the cell designer notes.
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParser.java
index 239e2c054c..eeeb3105ca 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParser.java
@@ -12,7 +12,7 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 
 /**
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParser.java
index ea871ffcb6..fdb5c0e3cc 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParser.java
@@ -9,7 +9,7 @@ import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.XmlAnnotationParser;
 import lcsb.mapviewer.converter.model.celldesigner.species.AbstractElementXmlParser;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 
 /**
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverter.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverter.java
index b794659117..d51a63d444 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverter.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverter.java
@@ -13,6 +13,11 @@ import org.apache.log4j.Logger;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerAnchor;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.IonChannelProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ReceptorProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.TruncatedProtein;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.IonChannelProteinAlias;
@@ -20,11 +25,6 @@ import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ReceptorProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.alias.TruncatedProteinAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.IonChannelProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.ReceptorProtein;
-import lcsb.mapviewer.model.map.species.TruncatedProtein;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/UnknownCellDesignerAliasConverter.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/UnknownCellDesignerAliasConverter.java
index 5e2c2eb783..719c38f3b8 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/UnknownCellDesignerAliasConverter.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/UnknownCellDesignerAliasConverter.java
@@ -1,43 +1,43 @@
-package lcsb.mapviewer.converter.model.celldesigner.geometry;
-
-import java.awt.geom.PathIterator;
-import java.awt.geom.Point2D;
-
-import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerAnchor;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-
-/**
- * Class that provides CellDesigner specific graphical information for
- * {@link lcsb.mapviewer.db.model.map.species.Unknown Unknown}. It's used for
- * conversion from xml to normal x,y coordinates.
- * 
- * @author Piotr Gawron
- * 
- */
-public class UnknownCellDesignerAliasConverter extends AbstractCellDesignerAliasConverter<SpeciesAlias> {
-	@Override
-	public Point2D getPointCoordinates(SpeciesAlias alias, CellDesignerAnchor anchor) {
-		if (invalidAnchorPosition(alias, anchor)) {
-			return alias.getCenter();
-		}
-		return getEllipseTransformation().getPointOnEllipseByAnchor(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), anchor);
-	}
-
-	@Override
-	public PathIterator getBoundPathIterator(SpeciesAlias alias) {
-		throw new NotImplementedException("This class doesn't provide boundPath");
-	}
-
-	@Override
-	public Point2D getAnchorPointCoordinates(SpeciesAlias alias, double angle) {
-		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
-			return alias.getCenter();
-		}
-		Point2D result;
-		result = getEllipseTransformation().getPointOnEllipseByRadian(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), angle);
-		return result;
-
-	}
-
-}
+package lcsb.mapviewer.converter.model.celldesigner.geometry;
+
+import java.awt.geom.PathIterator;
+import java.awt.geom.Point2D;
+
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerAnchor;
+import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
+
+/**
+ * Class that provides CellDesigner specific graphical information for
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.Unknown Unknown}. It's used for
+ * conversion from xml to normal x,y coordinates.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class UnknownCellDesignerAliasConverter extends AbstractCellDesignerAliasConverter<SpeciesAlias> {
+	@Override
+	public Point2D getPointCoordinates(SpeciesAlias alias, CellDesignerAnchor anchor) {
+		if (invalidAnchorPosition(alias, anchor)) {
+			return alias.getCenter();
+		}
+		return getEllipseTransformation().getPointOnEllipseByAnchor(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), anchor);
+	}
+
+	@Override
+	public PathIterator getBoundPathIterator(SpeciesAlias alias) {
+		throw new NotImplementedException("This class doesn't provide boundPath");
+	}
+
+	@Override
+	public Point2D getAnchorPointCoordinates(SpeciesAlias alias, double angle) {
+		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
+			return alias.getCenter();
+		}
+		Point2D result;
+		result = getEllipseTransformation().getPointOnEllipseByRadian(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), angle);
+		return result;
+
+	}
+
+}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
index 295e481344..3cb76024ff 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
@@ -27,7 +27,9 @@ import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerP
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.PolylineDataFactory;
 import lcsb.mapviewer.converter.model.celldesigner.structure.ConnectScheme;
 import lcsb.mapviewer.converter.model.celldesigner.structure.EditPoints;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.converter.model.celldesigner.structure.LineProperties;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierTypeUtils;
 import lcsb.mapviewer.converter.model.celldesigner.types.OperatorType;
@@ -36,7 +38,6 @@ import lcsb.mapviewer.model.graphics.ArrowType;
 import lcsb.mapviewer.model.graphics.ArrowTypeData;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.graphics.PolylineData;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
@@ -62,7 +63,6 @@ import lcsb.mapviewer.model.map.reaction.type.SimpleReactionInterface;
 import lcsb.mapviewer.model.map.reaction.type.TruncationReaction;
 import lcsb.mapviewer.model.map.reaction.type.TwoProductReactionInterface;
 import lcsb.mapviewer.model.map.reaction.type.TwoReactantReactionInterface;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This is a part of {@link ReactionXmlParser} class functionality that allows
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java
index 1a41106fac..629a3958b2 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java
@@ -21,6 +21,7 @@ import lcsb.mapviewer.converter.model.celldesigner.geometry.CellDesignerAliasCon
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerAnchor;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerLineTransformation;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerPointTransformation;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierTypeUtils;
 import lcsb.mapviewer.converter.model.celldesigner.types.OperatorType;
@@ -38,7 +39,6 @@ import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.SimpleReactionInterface;
 import lcsb.mapviewer.model.map.reaction.type.TwoProductReactionInterface;
 import lcsb.mapviewer.model.map.reaction.type.TwoReactantReactionInterface;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/AbstractElementXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/AbstractElementXmlParser.java
index b276976c94..5dc3dea215 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/AbstractElementXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/AbstractElementXmlParser.java
@@ -7,7 +7,7 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParser.java
index e822b78bf6..99878f25d4 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParser.java
@@ -8,11 +8,11 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRnaRegion;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias.AntisenseRnaRegionType;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
 
 /**
  * Class that performs parsing of the CellDesigner xml for AntisenseRna object.
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParser.java
index ed3050e1f7..5e14f7b498 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParser.java
@@ -8,11 +8,11 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 
 /**
  * Class that performs parsing of the CellDesigner xml for {@link Gene} object.
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/InternalModelSpeciesData.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/InternalModelSpeciesData.java
index d56085c958..df965befb1 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/InternalModelSpeciesData.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/InternalModelSpeciesData.java
@@ -1,214 +1,214 @@
-package lcsb.mapviewer.converter.model.celldesigner.species;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-
-import lcsb.mapviewer.common.Pair;
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.Unknown;
-
-/**
- * This class contains information about all species in model that are relevant
- * during parsing via CellDesigner parser.
- * 
- * @author Piotr Gawron
- * 
- */
-public class InternalModelSpeciesData {
-
-	/**
-	 * Default class logger.
-	 */
-	@SuppressWarnings("unused")
-	private final Logger											logger		= Logger.getLogger(InternalModelSpeciesData.class);
-
-	/**
-	 * Collection of proteins. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<Protein>				proteins;
-
-	/**
-	 * Collection of genes. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<Gene>						genes;
-
-	/**
-	 * Collection of genes. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<Rna>						rnas;
-
-	/**
-	 * Collection of antisense rnas. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<AntisenseRna>		antisenseRnas;
-
-	/**
-	 * Collection of phenotypes. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<Phenotype>			phenotypes;
-
-	/**
-	 * Collection of ions. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<Ion>						ions;
-
-	/**
-	 * Collection of simple molecules. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<SimpleMolecule>	simpleMolecules;
-
-	/**
-	 * Collection of drugs. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<Drug>						drugs;
-
-	/**
-	 * Collection of unknowns. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<Unknown>				unknowns;
-
-	/**
-	 * Collection of degraded elements. Used only by the CellDesigner parser.
-	 */
-	private SpeciesCollection<Degraded>				degradeds;
-
-	/**
-	 * Collection of complexes.
-	 */
-	private List<ComplexSpecies>							complexes	= new ArrayList<ComplexSpecies>();
-
-	/**
-	 * Default constructor.
-	 */
-	public InternalModelSpeciesData() {
-		proteins = new SpeciesCollection<Protein>();
-		genes = new SpeciesCollection<Gene>();
-		rnas = new SpeciesCollection<Rna>();
-		antisenseRnas = new SpeciesCollection<AntisenseRna>();
-		phenotypes = new SpeciesCollection<Phenotype>();
-		ions = new SpeciesCollection<Ion>();
-		simpleMolecules = new SpeciesCollection<SimpleMolecule>();
-		drugs = new SpeciesCollection<Drug>();
-		unknowns = new SpeciesCollection<Unknown>();
-		degradeds = new SpeciesCollection<Degraded>();
-	}
-
-	/**
-	 * 
-	 * @return {@link #proteins}
-	 */
-	public Collection<Protein> getProteins() {
-		return proteins.getAll();
-	}
-
-	/**
-	 * 
-	 * @return {@link #genes}
-	 */
-	public Collection<Gene> getGenes() {
-		return genes.getAll();
-	}
-
-	/**
-	 * 
-	 * @return {@link #rnas}
-	 */
-	public Collection<Rna> getRnas() {
-		return rnas.getAll();
-	}
-
-	/**
-	 * 
-	 * @return {@link #antisenseRnas}
-	 */
-	public Collection<AntisenseRna> getAntisenseRnas() {
-		return antisenseRnas.getAll();
-	}
-
-	/**
-	 * Updates information about species in the dataset.
-	 * 
-	 * @param collection
-	 *          set of species to be updated, first element in pair defines
-	 *          celldesigner identifier, second is the species
-	 */
-	public void updateSpecies(Collection<Pair<String, ? extends Species>> collection) {
-		for (Pair<String, ? extends Species> species : collection) {
-			updateSpecies(species.getRight(), species.getLeft());
-		}
-	}
-
-	/**
-	 * Updates information about species in the dataset (identified by
-	 * celldesigner specific identifier).
-	 * 
-	 * @param sp
-	 *          species to be updated
-	 * @param identifier
-	 *          celldesigner identifier
-	 */
-	public void updateSpecies(Species sp, String identifier) {
-		if (sp instanceof Gene) {
-			genes.updateSpeciesByLocalId((Gene) sp, identifier);
-		} else if (sp instanceof Protein) {
-			proteins.updateSpeciesByLocalId((Protein) sp, identifier);
-		} else if (sp instanceof Rna) {
-			rnas.updateSpeciesByLocalId((Rna) sp, identifier);
-		} else if (sp instanceof AntisenseRna) {
-			antisenseRnas.updateSpeciesByLocalId((AntisenseRna) sp, identifier);
-		} else if (sp instanceof Degraded) {
-			degradeds.updateSpeciesByLocalId((Degraded) sp, identifier);
-		} else if (sp instanceof Unknown) {
-			unknowns.updateSpeciesByLocalId((Unknown) sp, identifier);
-		} else if (sp instanceof Drug) {
-			drugs.updateSpeciesByLocalId((Drug) sp, identifier);
-		} else if (sp instanceof SimpleMolecule) {
-			simpleMolecules.updateSpeciesByLocalId((SimpleMolecule) sp, identifier);
-		} else if (sp instanceof Ion) {
-			ions.updateSpeciesByLocalId((Ion) sp, identifier);
-		} else if (sp instanceof Phenotype) {
-			phenotypes.updateSpeciesByLocalId((Phenotype) sp, identifier);
-		} else if (sp instanceof ComplexSpecies) {
-			complexes.add((ComplexSpecies) sp);
-		} else {
-			throw new InvalidArgumentException("Unknown species type: " + sp.getClass().getName());
-		}
-	}
-
-	/**
-	 * Returns list of all species in dataset.
-	 * 
-	 * @return list of all species in dataset
-	 */
-	public Collection<Species> getAll() {
-		List<Species> result = new ArrayList<Species>();
-
-		result.addAll(genes.getAll());
-		result.addAll(rnas.getAll());
-		result.addAll(antisenseRnas.getAll());
-		result.addAll(phenotypes.getAll());
-		result.addAll(ions.getAll());
-		result.addAll(simpleMolecules.getAll());
-		result.addAll(drugs.getAll());
-		result.addAll(unknowns.getAll());
-		result.addAll(degradeds.getAll());
-		result.addAll(proteins.getAll());
-		result.addAll(complexes);
-
-		return result;
-	}
-}
+package lcsb.mapviewer.converter.model.celldesigner.species;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import lcsb.mapviewer.common.Pair;
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
+
+/**
+ * This class contains information about all species in model that are relevant
+ * during parsing via CellDesigner parser.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class InternalModelSpeciesData {
+
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private final Logger											logger		= Logger.getLogger(InternalModelSpeciesData.class);
+
+	/**
+	 * Collection of proteins. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<Protein>				proteins;
+
+	/**
+	 * Collection of genes. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<Gene>						genes;
+
+	/**
+	 * Collection of genes. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<Rna>						rnas;
+
+	/**
+	 * Collection of antisense rnas. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<AntisenseRna>		antisenseRnas;
+
+	/**
+	 * Collection of phenotypes. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<Phenotype>			phenotypes;
+
+	/**
+	 * Collection of ions. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<Ion>						ions;
+
+	/**
+	 * Collection of simple molecules. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<SimpleMolecule>	simpleMolecules;
+
+	/**
+	 * Collection of drugs. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<Drug>						drugs;
+
+	/**
+	 * Collection of unknowns. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<Unknown>				unknowns;
+
+	/**
+	 * Collection of degraded elements. Used only by the CellDesigner parser.
+	 */
+	private SpeciesCollection<Degraded>				degradeds;
+
+	/**
+	 * Collection of complexes.
+	 */
+	private List<ComplexSpecies>							complexes	= new ArrayList<ComplexSpecies>();
+
+	/**
+	 * Default constructor.
+	 */
+	public InternalModelSpeciesData() {
+		proteins = new SpeciesCollection<Protein>();
+		genes = new SpeciesCollection<Gene>();
+		rnas = new SpeciesCollection<Rna>();
+		antisenseRnas = new SpeciesCollection<AntisenseRna>();
+		phenotypes = new SpeciesCollection<Phenotype>();
+		ions = new SpeciesCollection<Ion>();
+		simpleMolecules = new SpeciesCollection<SimpleMolecule>();
+		drugs = new SpeciesCollection<Drug>();
+		unknowns = new SpeciesCollection<Unknown>();
+		degradeds = new SpeciesCollection<Degraded>();
+	}
+
+	/**
+	 * 
+	 * @return {@link #proteins}
+	 */
+	public Collection<Protein> getProteins() {
+		return proteins.getAll();
+	}
+
+	/**
+	 * 
+	 * @return {@link #genes}
+	 */
+	public Collection<Gene> getGenes() {
+		return genes.getAll();
+	}
+
+	/**
+	 * 
+	 * @return {@link #rnas}
+	 */
+	public Collection<Rna> getRnas() {
+		return rnas.getAll();
+	}
+
+	/**
+	 * 
+	 * @return {@link #antisenseRnas}
+	 */
+	public Collection<AntisenseRna> getAntisenseRnas() {
+		return antisenseRnas.getAll();
+	}
+
+	/**
+	 * Updates information about species in the dataset.
+	 * 
+	 * @param collection
+	 *          set of species to be updated, first element in pair defines
+	 *          celldesigner identifier, second is the species
+	 */
+	public void updateSpecies(Collection<Pair<String, ? extends Species>> collection) {
+		for (Pair<String, ? extends Species> species : collection) {
+			updateSpecies(species.getRight(), species.getLeft());
+		}
+	}
+
+	/**
+	 * Updates information about species in the dataset (identified by
+	 * celldesigner specific identifier).
+	 * 
+	 * @param sp
+	 *          species to be updated
+	 * @param identifier
+	 *          celldesigner identifier
+	 */
+	public void updateSpecies(Species sp, String identifier) {
+		if (sp instanceof Gene) {
+			genes.updateSpeciesByLocalId((Gene) sp, identifier);
+		} else if (sp instanceof Protein) {
+			proteins.updateSpeciesByLocalId((Protein) sp, identifier);
+		} else if (sp instanceof Rna) {
+			rnas.updateSpeciesByLocalId((Rna) sp, identifier);
+		} else if (sp instanceof AntisenseRna) {
+			antisenseRnas.updateSpeciesByLocalId((AntisenseRna) sp, identifier);
+		} else if (sp instanceof Degraded) {
+			degradeds.updateSpeciesByLocalId((Degraded) sp, identifier);
+		} else if (sp instanceof Unknown) {
+			unknowns.updateSpeciesByLocalId((Unknown) sp, identifier);
+		} else if (sp instanceof Drug) {
+			drugs.updateSpeciesByLocalId((Drug) sp, identifier);
+		} else if (sp instanceof SimpleMolecule) {
+			simpleMolecules.updateSpeciesByLocalId((SimpleMolecule) sp, identifier);
+		} else if (sp instanceof Ion) {
+			ions.updateSpeciesByLocalId((Ion) sp, identifier);
+		} else if (sp instanceof Phenotype) {
+			phenotypes.updateSpeciesByLocalId((Phenotype) sp, identifier);
+		} else if (sp instanceof ComplexSpecies) {
+			complexes.add((ComplexSpecies) sp);
+		} else {
+			throw new InvalidArgumentException("Unknown species type: " + sp.getClass().getName());
+		}
+	}
+
+	/**
+	 * Returns list of all species in dataset.
+	 * 
+	 * @return list of all species in dataset
+	 */
+	public Collection<Species> getAll() {
+		List<Species> result = new ArrayList<Species>();
+
+		result.addAll(genes.getAll());
+		result.addAll(rnas.getAll());
+		result.addAll(antisenseRnas.getAll());
+		result.addAll(phenotypes.getAll());
+		result.addAll(ions.getAll());
+		result.addAll(simpleMolecules.getAll());
+		result.addAll(drugs.getAll());
+		result.addAll(unknowns.getAll());
+		result.addAll(degradeds.getAll());
+		result.addAll(proteins.getAll());
+		result.addAll(complexes);
+
+		return result;
+	}
+}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMapping.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMapping.java
index 4eab52ba7c..4e968b7396 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMapping.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMapping.java
@@ -3,16 +3,16 @@ package lcsb.mapviewer.converter.model.celldesigner.species;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.IonChannelProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ReceptorProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.TruncatedProtein;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.IonChannelProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ReceptorProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.TruncatedProteinAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.IonChannelProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.ReceptorProtein;
-import lcsb.mapviewer.model.map.species.TruncatedProtein;
 
 /**
  * This enum contains information about mapping between CellDesigner xml nodes
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParser.java
index fc1c009314..3350a30611 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParser.java
@@ -8,10 +8,10 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 
 /**
  * Class that performs parsing of the CellDesigner xml for {@link Protein}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParser.java
index 9405829076..ffa563d00b 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParser.java
@@ -8,10 +8,10 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.RnaRegion;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
 
 /**
  * Class that performs parsing of the CellDesigner xml for {@link Rna} object.
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollection.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollection.java
index b6163eee5b..7594604db1 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollection.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollection.java
@@ -8,7 +8,7 @@ import java.util.Map;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidStateException;
-import lcsb.mapviewer.model.map.species.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 /**
  * This collection performs some magic, so please try no to understand it :). It
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParser.java
index 61fe98c920..db98bc09d9 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParser.java
@@ -16,7 +16,13 @@ import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.XmlAnnotationParser;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
@@ -26,12 +32,6 @@ import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * Class used to parse CellDesigner xml nodes containing collections of
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMapping.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMapping.java
index 981859c2c9..abe71c3ce1 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMapping.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMapping.java
@@ -1,6 +1,18 @@
 package lcsb.mapviewer.converter.model.celldesigner.species;
 
 import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
@@ -13,18 +25,6 @@ import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
 import lcsb.mapviewer.model.map.layout.alias.UnknownAlias;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.Unknown;
 
 /**
  * This enum contains information about mapping between CellDesigner xml nodes
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParser.java
index eebd2c75ab..38d6af5ff6 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParser.java
@@ -11,28 +11,28 @@ import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.XmlAnnotationParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.RnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.converter.model.celldesigner.structure.SpeciesState;
 import lcsb.mapviewer.model.map.InconsistentModelException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
+import lcsb.mapviewer.model.map.layout.alias.PositionToCompartment;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
-import lcsb.mapviewer.model.map.species.fields.PositionToCompartment;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
 
 /**
  * Parser for sbml part of CellDesigner format. It's used for retrieving Species
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/AntisenseRna.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRna.java
similarity index 93%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/AntisenseRna.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRna.java
index 2486171748..dbe7dc37c5 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/AntisenseRna.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRna.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -15,7 +15,6 @@ import org.hibernate.annotations.LazyCollectionOption;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
 
 /**
  * Class representing antisense rna in the model.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/AntisenseRnaComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaComparator.java
similarity index 91%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/AntisenseRnaComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaComparator.java
index 0f0b0e3188..2bb9ff7cb0 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/AntisenseRnaComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 import java.util.HashSet;
@@ -7,7 +7,6 @@ import java.util.Set;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.comparator.StringSetComparator;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
 
 /**
  * This class implements comparator interface for AntisenseRna.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/AntisenseRnaRegion.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegion.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/fields/AntisenseRnaRegion.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegion.java
index 0fa6e0fa58..8966d67425 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/AntisenseRnaRegion.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegion.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species.fields;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.io.Serializable;
 
@@ -19,13 +19,13 @@ import org.hibernate.annotations.CascadeType;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias.AntisenseRnaRegionType;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This structure contains information about antisense rna region (rna fragment
  * of interest) for a specific
- * {@link lcsb.mapviewer.model.map.species.AntisenseRna AntisenseRna}.
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna AntisenseRna}.
  * 
  * @author Piotr Gawron
  * 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Chemical.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Chemical.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Chemical.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Chemical.java
index 7de4104415..b99380b8be 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Chemical.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Chemical.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.Column;
 import javax.persistence.DiscriminatorValue;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/agregator/Compartment.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Compartment.java
similarity index 93%
rename from model/src/main/java/lcsb/mapviewer/model/map/agregator/Compartment.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Compartment.java
index a60649bd67..0396a2a81f 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/agregator/Compartment.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Compartment.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.agregator;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -11,7 +11,6 @@ import javax.persistence.OneToMany;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 
 /**
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/agregator/CompartmentComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentComparator.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/agregator/CompartmentComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentComparator.java
index 7b9fa190fd..0034469773 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/agregator/CompartmentComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentComparator.java
@@ -1,90 +1,89 @@
-package lcsb.mapviewer.model.map.agregator;
-
-import java.util.Comparator;
-
-import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.common.exception.InvalidClassException;
-import lcsb.mapviewer.model.map.ElementComparator;
-
-/**
- * This class implements comparator interface for Compartment.
- * 
- * @author Piotr Gawron
- * 
- * @see Compartment
- * 
- */
-public class CompartmentComparator implements Comparator<Compartment> {
-
-	/**
-	 * Epsilon value used for comparison of doubles.
-	 */
-	private double epsilon;
-
-	/**
-	 * Constructor that requires {@link #epsilon} parameter.
-	 * 
-	 * @param epsilon
-	 *          {@link #epsilon}
-	 */
-	public CompartmentComparator(double epsilon) {
-		this.epsilon = epsilon;
-	}
-
-	/**
-	 * Default constructor.
-	 */
-	public CompartmentComparator() {
-		this(Configuration.EPSILON);
-	}
-
-	@Override
-	public int compare(Compartment arg0, Compartment arg1) {
-		if (arg0 == null) {
-			if (arg1 == null) {
-				return 0;
-			} else {
-				return 1;
-			}
-		} else if (arg1 == null) {
-			return -1;
-		}
-
-		if (arg0.getClass().equals(arg1.getClass())) {
-			if (arg0.getClass().equals(Compartment.class)) {
-				return internalCompare(arg0, arg1);
-			} else {
-				throw new InvalidClassException("Don't know how to compare classes: " + arg0.getClass());
-			}
-		} else {
-			return -1;
-		}
-	}
-
-	/**
-	 * This method compares only the fields that are defined in Compartment class
-	 * in inheritence tree. By the design it calls also comparator of the upper
-	 * (Element) class.
-	 * 
-	 * @param arg0
-	 *          first object to compare
-	 * @param arg1
-	 *          second object to compare
-	 * @return if all fields are qual then returns 0. If they are different then
-	 *         -1/1 is returned.
-	 */
-	private int internalCompare(Compartment arg0, Compartment arg1) {
-		ElementComparator elementComparator = new ElementComparator(epsilon);
-
-		int result = elementComparator.internalCompare(arg0, arg1);
-		if (result != 0) {
-			return result;
-		}
-
-		if (!arg0.getElementId().equals(arg1.getElementId())) {
-			return arg0.getElementId().compareTo(arg1.getElementId());
-		}
-		return 0;
-	}
-
-}
+package lcsb.mapviewer.converter.model.celldesigner.structure;
+
+import java.util.Comparator;
+
+import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.common.exception.InvalidClassException;
+
+/**
+ * This class implements comparator interface for Compartment.
+ * 
+ * @author Piotr Gawron
+ * 
+ * @see Compartment
+ * 
+ */
+public class CompartmentComparator implements Comparator<Compartment> {
+
+	/**
+	 * Epsilon value used for comparison of doubles.
+	 */
+	private double epsilon;
+
+	/**
+	 * Constructor that requires {@link #epsilon} parameter.
+	 * 
+	 * @param epsilon
+	 *          {@link #epsilon}
+	 */
+	public CompartmentComparator(double epsilon) {
+		this.epsilon = epsilon;
+	}
+
+	/**
+	 * Default constructor.
+	 */
+	public CompartmentComparator() {
+		this(Configuration.EPSILON);
+	}
+
+	@Override
+	public int compare(Compartment arg0, Compartment arg1) {
+		if (arg0 == null) {
+			if (arg1 == null) {
+				return 0;
+			} else {
+				return 1;
+			}
+		} else if (arg1 == null) {
+			return -1;
+		}
+
+		if (arg0.getClass().equals(arg1.getClass())) {
+			if (arg0.getClass().equals(Compartment.class)) {
+				return internalCompare(arg0, arg1);
+			} else {
+				throw new InvalidClassException("Don't know how to compare classes: " + arg0.getClass());
+			}
+		} else {
+			return -1;
+		}
+	}
+
+	/**
+	 * This method compares only the fields that are defined in Compartment class
+	 * in inheritence tree. By the design it calls also comparator of the upper
+	 * (Element) class.
+	 * 
+	 * @param arg0
+	 *          first object to compare
+	 * @param arg1
+	 *          second object to compare
+	 * @return if all fields are qual then returns 0. If they are different then
+	 *         -1/1 is returned.
+	 */
+	private int internalCompare(Compartment arg0, Compartment arg1) {
+		ElementComparator elementComparator = new ElementComparator(epsilon);
+
+		int result = elementComparator.internalCompare(arg0, arg1);
+		if (result != 0) {
+			return result;
+		}
+
+		if (!arg0.getElementId().equals(arg1.getElementId())) {
+			return arg0.getElementId().compareTo(arg1.getElementId());
+		}
+		return 0;
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/ComplexSpecies.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpecies.java
similarity index 94%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/ComplexSpecies.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpecies.java
index db9107d2aa..35cceece6a 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/ComplexSpecies.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpecies.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -12,7 +12,6 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 
 /**
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/ComplexSpeciesComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesComparator.java
similarity index 93%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/ComplexSpeciesComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesComparator.java
index 70c072161e..c8e398769a 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/ComplexSpeciesComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 
@@ -8,9 +8,6 @@ import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.comparator.IntegerComparator;
 import lcsb.mapviewer.common.comparator.StringComparator;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.ElementComparator;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 
 /**
  * This class implements comparator interface for ComplexSpecies.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Degraded.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Degraded.java
similarity index 90%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Degraded.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Degraded.java
index 6d4f86d5fb..3f4935ffb2 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Degraded.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Degraded.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/DegradedComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedComparator.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/DegradedComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedComparator.java
index 341a95a1d6..c59ba6e2b4 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/DegradedComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Drug.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Drug.java
similarity index 90%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Drug.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Drug.java
index b44732d671..977bca234d 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Drug.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Drug.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/DrugComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugComparator.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/DrugComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugComparator.java
index 722268f526..46522e97af 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/DrugComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/Element.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Element.java
similarity index 98%
rename from model/src/main/java/lcsb/mapviewer/model/map/Element.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Element.java
index 8279738bce..40e2c6bd2b 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/Element.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Element.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -32,12 +32,11 @@ import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.IndexColumn;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelData;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 
 /**
  * Generic element of the map. It is a root object in inheritence three for
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/ElementComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementComparator.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/ElementComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementComparator.java
index ee7fb16e3d..9e573a0ab8 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/ElementComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 import java.util.HashSet;
@@ -9,10 +9,7 @@ import lcsb.mapviewer.common.comparator.StringComparator;
 import lcsb.mapviewer.common.comparator.StringListComparator;
 import lcsb.mapviewer.common.comparator.StringSetComparator;
 import lcsb.mapviewer.common.exception.InvalidClassException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
-import lcsb.mapviewer.model.map.agregator.CompartmentComparator;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.SpeciesComparator;
+import lcsb.mapviewer.model.map.MiriamData;
 
 import org.apache.log4j.Logger;
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Gene.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Gene.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Gene.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Gene.java
index 3056fdea12..bd9660cdbb 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Gene.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Gene.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -14,7 +14,6 @@ import org.hibernate.annotations.LazyCollectionOption;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 
 /**
  * Class representing gene in the model.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/GeneComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneComparator.java
similarity index 91%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/GeneComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneComparator.java
index 2522cbdcd6..9f5ea4b31c 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/GeneComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 import java.util.HashSet;
@@ -7,7 +7,6 @@ import java.util.Set;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.comparator.StringSetComparator;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 
 /**
  * This class implements comparator interface for Gene.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/GenericProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProtein.java
similarity index 90%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/GenericProtein.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProtein.java
index 1d757016c5..7161bcfe86 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/GenericProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProtein.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Ion.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Ion.java
similarity index 90%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Ion.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Ion.java
index 4132566ff4..13198e509d 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Ion.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Ion.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/IonChannelProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProtein.java
similarity index 90%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/IonChannelProtein.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProtein.java
index 62cc3a6ea5..c0189b97eb 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/IonChannelProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProtein.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/IonComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonComparator.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/IonComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonComparator.java
index 8c35ad4a35..352ad337ba 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/IonComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/ModificationResidue.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ModificationResidue.java
similarity index 93%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/fields/ModificationResidue.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ModificationResidue.java
index 0470ff62b7..37e5683269 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/ModificationResidue.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ModificationResidue.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species.fields;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.io.Serializable;
 
@@ -17,7 +17,7 @@ import org.apache.log4j.Logger;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
-import lcsb.mapviewer.model.map.species.Species;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 
 /**
  * This class represent modification residue in protein and gene. However, it is
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Phenotype.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Phenotype.java
new file mode 100644
index 0000000000..b43dac692f
--- /dev/null
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Phenotype.java
@@ -0,0 +1,62 @@
+package lcsb.mapviewer.converter.model.celldesigner.structure;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.layout.alias.PhenotypeAlias;
+
+/**
+ * Class representing phenotype in the model.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@DiscriminatorValue("Phenotype")
+public class Phenotype extends Species<PhenotypeAlias> {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Constructor that initializes phenotype with the data passed in the
+	 * argument.
+	 * 
+	 * @param species
+	 *          original species used for data initialization
+	 */
+	public Phenotype(Species species) {
+		super(species);
+	}
+
+	/**
+	 * Default constructor.
+	 */
+	public Phenotype() {
+	}
+
+	@Override
+	public Phenotype copy() {
+		if (this.getClass() == Phenotype.class) {
+			return new Phenotype(this);
+		} else {
+			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+		}
+	}
+
+	@Override
+	public String getStringType() {
+		return "Phenotype";
+	}
+
+	@Override
+	public PhenotypeAlias createAlias(String aliasId) {
+		PhenotypeAlias result = new PhenotypeAlias(aliasId);
+		super.setAliasFields(result);
+		return result;
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/PhenotypeComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeComparator.java
similarity index 62%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/PhenotypeComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeComparator.java
index 39318fab73..b0a691dc86 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/PhenotypeComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeComparator.java
@@ -1,13 +1,11 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.common.comparator.IntegerComparator;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.AssociatedElementComparator;
 
 /**
  * This class implements comparator interface for Phenotype.
@@ -86,20 +84,6 @@ public class PhenotypeComparator implements Comparator<Phenotype> {
 			return result;
 		}
 
-		IntegerComparator integerComparator = new IntegerComparator();
-
-		if (integerComparator.compare(arg0.getAssociatedElements().size(), arg1.getAssociatedElements().size()) != 0) {
-			logger.debug("number of associated elements different: " + arg0.getAssociatedElements().size() + ", " + arg1.getAssociatedElements().size());
-			return integerComparator.compare(arg0.getAssociatedElements().size(), arg1.getAssociatedElements().size());
-		}
-
-		AssociatedElementComparator associatedElementComparator = new AssociatedElementComparator();
-		for (int i = 0; i < arg0.getAssociatedElements().size(); i++) {
-			if (associatedElementComparator.compare(arg0.getAssociatedElements().get(i), arg1.getAssociatedElements().get(i)) != 0) {
-				logger.debug("Associated elements different");
-				return associatedElementComparator.compare(arg0.getAssociatedElements().get(i), arg1.getAssociatedElements().get(i));
-			}
-		}
 		return 0;
 	}
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Protein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Protein.java
similarity index 94%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Protein.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Protein.java
index f53a79e3e7..4bfa7ab8d4 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Protein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Protein.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,7 +17,6 @@ import org.hibernate.annotations.LazyCollectionOption;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 
 /**
  * Class representing protein in the model.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/ProteinComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinComparator.java
similarity index 93%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/ProteinComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinComparator.java
index a102f6b7aa..0c3f33d7f0 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/ProteinComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 import java.util.HashSet;
@@ -10,7 +10,6 @@ import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.comparator.IntegerComparator;
 import lcsb.mapviewer.common.comparator.StringComparator;
 import lcsb.mapviewer.common.comparator.StringSetComparator;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 
 /**
  * This class implements comparator interface for Protein.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/ReceptorProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProtein.java
similarity index 90%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/ReceptorProtein.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProtein.java
index 22b69af23c..82a4e23eb4 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/ReceptorProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProtein.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Rna.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Rna.java
similarity index 93%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Rna.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Rna.java
index 7f879606cb..e0bdfba4dd 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Rna.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Rna.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -15,7 +15,6 @@ import org.hibernate.annotations.LazyCollectionOption;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
 
 /**
  * Class representing rna in the model.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/RnaComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaComparator.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/RnaComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaComparator.java
index c1273dada2..d1982ef413 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/RnaComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 import java.util.HashSet;
@@ -7,7 +7,6 @@ import java.util.Set;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.comparator.StringSetComparator;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
 
 /**
  * This class implements comparator interface for Rna.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/RnaRegion.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaRegion.java
similarity index 91%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/fields/RnaRegion.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaRegion.java
index dc681880cb..128dcfe834 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/RnaRegion.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaRegion.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species.fields;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.io.Serializable;
 
@@ -15,12 +15,12 @@ import javax.persistence.Table;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 import lcsb.mapviewer.model.map.layout.alias.RnaRegionAlias;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This structure contains information about rna region (rna fragment of
- * interest) for a specific {@link lcsb.mapviewer.model.map.species.Rna Rna}.
+ * interest) for a specific {@link lcsb.mapviewer.converter.model.celldesigner.structure.Rna Rna}.
  * 
  * @author Piotr Gawron
  * 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/SimpleMolecule.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMolecule.java
similarity index 91%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/SimpleMolecule.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMolecule.java
index d99677feb8..64ca650675 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/SimpleMolecule.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMolecule.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/SimpleMoleculeComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeComparator.java
similarity index 94%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/SimpleMoleculeComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeComparator.java
index 24d954c4a3..bb24f976d6 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/SimpleMoleculeComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Species.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Species.java
similarity index 94%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Species.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Species.java
index 1cb2b2f556..4a79d01566 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Species.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Species.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
@@ -9,10 +9,9 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.layout.alias.PositionToCompartment;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.fields.PositionToCompartment;
 
 /**
  * Generic species of the map.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/SpeciesComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesComparator.java
similarity index 96%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/SpeciesComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesComparator.java
index b07ba68a12..486f9d6881 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/SpeciesComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 
@@ -9,7 +9,6 @@ import lcsb.mapviewer.common.comparator.BooleanComparator;
 import lcsb.mapviewer.common.comparator.IntegerComparator;
 import lcsb.mapviewer.common.comparator.StringComparator;
 import lcsb.mapviewer.common.exception.InvalidClassException;
-import lcsb.mapviewer.model.map.ElementComparator;
 
 /**
  * This class implements comparator interface for Species. It calls comparator
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesState.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesState.java
index dffaf038f6..41f82d6aa0 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesState.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesState.java
@@ -13,13 +13,6 @@ import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaRegionAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
 
 /**
  * Structure for storing the state of the Species in CellDesigner format.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/TruncatedProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProtein.java
similarity index 90%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/TruncatedProtein.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProtein.java
index bf3168b5b4..2a1ebc5dfe 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/TruncatedProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProtein.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Unknown.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Unknown.java
similarity index 90%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/Unknown.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Unknown.java
index dd10b378f3..1c1d8077a9 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Unknown.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/Unknown.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/UnknownComparator.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownComparator.java
similarity index 92%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/UnknownComparator.java
rename to converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownComparator.java
index 5ec9093971..2e064d10ee 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/UnknownComparator.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownComparator.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import java.util.Comparator;
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
index cc5784f1b3..9ef5fe9197 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
@@ -9,8 +9,8 @@ import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.geometry.PointTransformation;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.ReactionCellDesignerConverter;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.graphics.PolylineData;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.AbstractNode;
 import lcsb.mapviewer.model.map.reaction.Modifier;
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
index fdc24dab14..98712e479c 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
@@ -27,8 +27,11 @@ import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.graphics.PolylineData;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
@@ -42,9 +45,6 @@ import lcsb.mapviewer.model.map.layout.graphics.LayerText;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelComparator;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class CellDesignerXmlParserTest extends CellDesignerTestFunctions {
 	Logger logger = Logger.getLogger(CellDesignerXmlParserTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ComplexParserTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ComplexParserTests.java
index 774abcfd62..5cae4d2dd7 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ComplexParserTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ComplexParserTests.java
@@ -27,13 +27,13 @@ import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelComparator;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 public class ComplexParserTests extends CellDesignerTestFunctions {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParserTest.java
index 2c6a02437a..864e24d010 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParserTest.java
@@ -15,6 +15,7 @@ import org.junit.Test;
 import org.w3c.dom.Node;
 
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.graphics.PolylineDataComparator;
 import lcsb.mapviewer.model.map.layout.alias.AliasGroup;
@@ -30,7 +31,6 @@ import lcsb.mapviewer.model.map.layout.graphics.LayerText;
 import lcsb.mapviewer.model.map.layout.graphics.LayerTextComparator;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class LayerXmlParserTest extends CellDesignerTestFunctions {
 	Logger				 logger	= Logger.getLogger(LayerXmlParserTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/NestedComplexParsingTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/NestedComplexParsingTests.java
index 4a29655ff1..ccc01fb043 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/NestedComplexParsingTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/NestedComplexParsingTests.java
@@ -4,12 +4,12 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Species;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParserTest.java
index f0ac6dcdc7..fc8482f9e8 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParserTest.java
@@ -17,15 +17,15 @@ import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.species.ModelMock;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class AliasCollectionXmlParserTest extends CellDesignerTestFunctions {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParserTest.java
index be613603e2..5a84ec35f8 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParserTest.java
@@ -17,7 +17,8 @@ import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.species.ModelMock;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
 import lcsb.mapviewer.model.map.layout.alias.BottomSquareCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.LeftSquareCompartmentAlias;
@@ -26,7 +27,6 @@ import lcsb.mapviewer.model.map.layout.alias.SquareCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.TopSquareCompartmentAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 
 public class CompartmentAliasXmlParserTest extends CellDesignerTestFunctions {
 	static Logger									logger = Logger.getLogger(CompartmentAliasXmlParser.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParserTest.java
index 4e8cf26bce..fb303e53ac 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParserTest.java
@@ -11,11 +11,11 @@ import org.junit.Test;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.species.ModelMock;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class ComplexAliasXmlParserTest extends CellDesignerTestFunctions {
 	Model													model;
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParserTest.java
index 199b98bc2b..eb0b36804b 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParserTest.java
@@ -21,16 +21,16 @@ import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.species.ModelMock;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelData;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class SpeciesAliasXmlParserTest extends CellDesignerTestFunctions {
 	static Logger									logger									= Logger.getLogger(SpeciesAliasXmlParser.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java
index 65815619db..c4e168099a 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java
@@ -22,6 +22,8 @@ import org.w3c.dom.Node;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
@@ -31,8 +33,6 @@ import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class RestAnnotationParserTest extends CellDesignerTestFunctions {
 	Logger logger = Logger.getLogger(RestAnnotationParserTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParserTest.java
index 439b789a3c..f85656e82b 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParserTest.java
@@ -17,7 +17,7 @@ import org.w3c.dom.Node;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 
 public class CompartmentCollectionXmlParserTest extends CellDesignerTestFunctions {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParserTest.java
index 1d15e75ad8..c045378475 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParserTest.java
@@ -23,7 +23,7 @@ import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.species.ProteinXmlParserTest;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.model.Model;
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/AbstractCellDesignerAliasConverterTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/AbstractCellDesignerAliasConverterTest.java
index 81d2959cfb..4dc677a758 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/AbstractCellDesignerAliasConverterTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/AbstractCellDesignerAliasConverterTest.java
@@ -17,10 +17,10 @@ import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerA
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerEllipseTransformation;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerPolygonTransformation;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerRectangleTransformation;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class AbstractCellDesignerAliasConverterTest {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/IonCellDesignerAliasConverterTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/IonCellDesignerAliasConverterTest.java
index 9f2af55ad5..7ccdbdbbec 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/IonCellDesignerAliasConverterTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/IonCellDesignerAliasConverterTest.java
@@ -11,9 +11,9 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
 import lcsb.mapviewer.model.map.layout.alias.IonAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Ion;
 
 public class IonCellDesignerAliasConverterTest {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinConverterTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinConverterTest.java
index 8ed9d0a759..6973e8af94 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinConverterTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinConverterTest.java
@@ -11,8 +11,8 @@ import org.junit.Test;
 
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerAnchor;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ProteinConverterTest extends CellDesignerTestFunctions {
 	static Logger logger = Logger.getLogger(ProteinConverterTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionCollectionXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionCollectionXmlParserTest.java
index f3def802ed..4b0c112fed 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionCollectionXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionCollectionXmlParserTest.java
@@ -14,12 +14,12 @@ import org.w3c.dom.Node;
 
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ReactionCollectionXmlParserTest extends CellDesignerTestFunctions {
 	Logger logger = Logger.getLogger(ReactionCollectionXmlParserTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
index 59b7ca63b1..0604c7d35c 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
@@ -12,6 +12,7 @@ import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.compartment.CompartmentCollectionXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
@@ -21,7 +22,6 @@ import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.TwoProductReactionInterface;
 import lcsb.mapviewer.model.map.reaction.type.TwoReactantReactionInterface;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ReactionFromXmlTest extends CellDesignerTestFunctions {
 	ReactionXmlParser	parser; 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionParserTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionParserTests.java
index 17d7115f07..6da9140073 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionParserTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionParserTests.java
@@ -22,6 +22,7 @@ import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.graphics.ArrowType;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.graphics.PolylineData;
@@ -56,7 +57,6 @@ import lcsb.mapviewer.model.map.reaction.type.TranscriptionReaction;
 import lcsb.mapviewer.model.map.reaction.type.TranslationReaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
 import lcsb.mapviewer.model.map.reaction.type.TruncationReaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ReactionParserTests extends CellDesignerTestFunctions {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXmlTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXmlTest.java
index d3342c7c9b..2202e9cf5e 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXmlTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXmlTest.java
@@ -17,6 +17,8 @@ import org.junit.Test;
 import lcsb.mapviewer.common.EventStorageLoggerAppender;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
@@ -32,8 +34,6 @@ import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.DissociationReaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ReactionToXmlTest {
 	Logger				logger			= Logger.getLogger(ReactionToXmlTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParserTest.java
index d4ec47fbdc..7fec98632d 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParserTest.java
@@ -21,9 +21,9 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRnaRegion;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias.AntisenseRnaRegionType;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
 
 public class AntisenseRnaXmlParserTest extends CellDesignerTestFunctions {
 	protected Logger							logger							 = Logger.getLogger(AntisenseRnaXmlParserTest.class.getName());
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ComplexParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ComplexParserTest.java
index e1f3350f76..ec79d3196b 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ComplexParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ComplexParserTest.java
@@ -22,14 +22,14 @@ import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.alias.ComplexAliasXmlParser;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelData;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 
 public class ComplexParserTest extends CellDesignerTestFunctions {
 	Logger												logger									= Logger.getLogger(ComplexParserTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java
index 10fc0e353c..1aed0e229d 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java
@@ -23,12 +23,12 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 
 public class GeneXmlParserTest extends CellDesignerTestFunctions {
 	Logger				logger			 = Logger.getLogger(GeneXmlParserTest.class.getName());
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/InternalModelSpeciesDataTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/InternalModelSpeciesDataTest.java
index 56033d7409..c3277a4455 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/InternalModelSpeciesDataTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/InternalModelSpeciesDataTest.java
@@ -1,50 +1,50 @@
-package lcsb.mapviewer.converter.model.celldesigner.species;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.species.Species;
-
-public class InternalModelSpeciesDataTest {
-
-	@AfterClass
-	public static void tearDownAfterClass() throws Exception {
-	}
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testGetters() {
-		InternalModelSpeciesData data = new InternalModelSpeciesData();
-		assertNotNull(data.getAll());
-		assertNotNull(data.getAntisenseRnas());
-		assertNotNull(data.getGenes());
-		assertNotNull(data.getProteins());
-		assertNotNull(data.getRnas());
-	}
-
-	@Test
-	public void testUpdateUnknownSpecies() {
-		InternalModelSpeciesData data = new InternalModelSpeciesData();
-		try {
-			data.updateSpecies(new Species(), null);
-			fail("Exception expected");
-		} catch (InvalidArgumentException e) {
-			assertTrue(e.getMessage().contains("Unknown species type"));
-		}
-	}
-
-}
+package lcsb.mapviewer.converter.model.celldesigner.species;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+
+public class InternalModelSpeciesDataTest {
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testGetters() {
+		InternalModelSpeciesData data = new InternalModelSpeciesData();
+		assertNotNull(data.getAll());
+		assertNotNull(data.getAntisenseRnas());
+		assertNotNull(data.getGenes());
+		assertNotNull(data.getProteins());
+		assertNotNull(data.getRnas());
+	}
+
+	@Test
+	public void testUpdateUnknownSpecies() {
+		InternalModelSpeciesData data = new InternalModelSpeciesData();
+		try {
+			data.updateSpecies(new Species(), null);
+			fail("Exception expected");
+		} catch (InvalidArgumentException e) {
+			assertTrue(e.getMessage().contains("Unknown species type"));
+		}
+	}
+
+}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ModelMock.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ModelMock.java
index 0c414a753c..466f686c23 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ModelMock.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ModelMock.java
@@ -9,12 +9,13 @@ import java.util.Map;
 import java.util.Set;
 
 import lcsb.mapviewer.common.EventStorageLoggerAppender;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.OverviewImage;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
@@ -29,7 +30,6 @@ import lcsb.mapviewer.model.map.model.ModelData;
 import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
 import lcsb.mapviewer.model.map.model.SubmodelConnection;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 import org.apache.log4j.Logger;
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMappingTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMappingTest.java
index ea3672b708..2ba1853a76 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMappingTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMappingTest.java
@@ -13,7 +13,7 @@ import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 
 public class ProteinMappingTest {
 	Logger logger = Logger.getLogger(ProteinMappingTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParserTest.java
index 0fa86025bd..19c2ab5083 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParserTest.java
@@ -23,10 +23,10 @@ import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
 
 public class ProteinXmlParserTest extends CellDesignerTestFunctions {
 	Logger logger					 = Logger.getLogger(ProteinXmlParserTest.class.getName());
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParserTest.java
index 69edb09f72..34757ada7c 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParserTest.java
@@ -22,7 +22,7 @@ import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
-import lcsb.mapviewer.model.map.species.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
 
 public class RnaXmlParserTest extends CellDesignerTestFunctions {
 	protected Logger							logger			 = Logger.getLogger(RnaXmlParserTest.class.getName());
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionTest.java
index 2893ddaeb9..07dde3ae48 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionTest.java
@@ -12,11 +12,11 @@ import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.TruncatedProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.TruncatedProtein;
 
 public class SpeciesCollectionTest {
 	Logger logger = Logger.getLogger(SpeciesCollectionTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParserTest.java
index bc35785af4..3b78eebfc6 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParserTest.java
@@ -24,6 +24,13 @@ import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
@@ -33,13 +40,6 @@ import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class SpeciesCollectionXmlParserTest extends CellDesignerTestFunctions {
 	static Logger									logger											= Logger.getLogger(SpeciesCollectionXmlParserTest.class);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMappingTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMappingTest.java
index 633ad1af14..1d70306270 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMappingTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMappingTest.java
@@ -11,7 +11,7 @@ import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class SpeciesMappingTest {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParserTest.java
index 4a32a89157..fd258d2988 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParserTest.java
@@ -27,30 +27,30 @@ import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.RnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.converter.model.celldesigner.structure.SpeciesState;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.model.map.InconsistentModelException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.Unknown;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
 
 public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 	@SuppressWarnings("unused")
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/AntisenseRnaComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaComparatorTest.java
similarity index 87%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/AntisenseRnaComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaComparatorTest.java
index e22fb2cb7e..fa649ac8af 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/AntisenseRnaComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -9,8 +9,10 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRnaComparator;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRnaRegion;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias.AntisenseRnaRegionType;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
 
 public class AntisenseRnaComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AntisenseRnaRegionTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegionTest.java
similarity index 93%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/fields/AntisenseRnaRegionTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegionTest.java
index bce8a334db..0564a8bc98 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AntisenseRnaRegionTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegionTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species.fields;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -14,7 +14,7 @@ import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias.AntisenseRnaRegionType;
-import lcsb.mapviewer.model.map.species.Species;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 
 public class AntisenseRnaRegionTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/AntisenseRnaTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaTest.java
similarity index 91%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/AntisenseRnaTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaTest.java
index a57f4364fc..4e4b7fa223 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/AntisenseRnaTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -14,8 +14,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 
 public class AntisenseRnaTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/agregator/CompartmentComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentComparatorTest.java
similarity index 93%
rename from model/src/test/java/lcsb/mapviewer/model/map/agregator/CompartmentComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentComparatorTest.java
index 41f9c54ebb..5e52e347f9 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/agregator/CompartmentComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.agregator;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/agregator/CompartmentTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentTest.java
similarity index 91%
rename from model/src/test/java/lcsb/mapviewer/model/map/agregator/CompartmentTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentTest.java
index 9c3f6451a6..4c2061915b 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/agregator/CompartmentTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.agregator;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -12,8 +12,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class CompartmentTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/ComplexSpeciesComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesComparatorTest.java
similarity index 90%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/ComplexSpeciesComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesComparatorTest.java
index 4bbaa3ab6c..8decad505f 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/ComplexSpeciesComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -11,8 +11,12 @@ import org.junit.Test;
 import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpeciesComparator;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 
 public class ComplexSpeciesComparatorTest {
 	Logger									 logger			= Logger.getLogger(ComplexSpeciesComparatorTest.class);
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/ComplexSpeciesTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesTest.java
similarity index 87%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/ComplexSpeciesTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesTest.java
index 1547c2f329..1c15f8cf5a 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/ComplexSpeciesTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -14,7 +14,9 @@ import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class ComplexSpeciesTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/DegradedComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedComparatorTest.java
similarity index 88%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/DegradedComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedComparatorTest.java
index 793abb6410..0d15ec6b2a 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/DegradedComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.DegradedComparator;
 
 public class DegradedComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/DegradedTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedTest.java
similarity index 83%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/DegradedTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedTest.java
index 495b9157da..fafbfa6f55 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/DegradedTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class DegradedTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/DrugComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugComparatorTest.java
similarity index 86%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/DrugComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugComparatorTest.java
index 2ca3baa4e2..84c3de7bec 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/DrugComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
+import lcsb.mapviewer.converter.model.celldesigner.structure.DrugComparator;
 
 public class DrugComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/DrugTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugTest.java
similarity index 83%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/DrugTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugTest.java
index 57d7c4efc4..381663e7c4 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/DrugTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class DrugTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/ElementComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementComparatorTest.java
similarity index 92%
rename from model/src/test/java/lcsb/mapviewer/model/map/ElementComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementComparatorTest.java
index a8f10c4b6c..596a4ce353 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/ElementComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -10,10 +10,10 @@ import org.junit.Test;
 import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.InvalidClassException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.fields.PositionToCompartment;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamRelationType;
+import lcsb.mapviewer.model.map.MiriamType;
+import lcsb.mapviewer.model.map.layout.alias.PositionToCompartment;
 
 public class ElementComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/ElementTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementTest.java
similarity index 89%
rename from model/src/test/java/lcsb/mapviewer/model/map/ElementTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementTest.java
index 9550d36991..4191dd34eb 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/ElementTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -15,10 +15,13 @@ import org.junit.Test;
 
 import lcsb.mapviewer.ModelTestFunctions;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 
 public class ElementTest extends ModelTestFunctions {
 	Logger logger = Logger.getLogger(ElementTest.class);
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/GeneComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneComparatorTest.java
similarity index 90%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/GeneComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneComparatorTest.java
index 69a1698416..d93122574d 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/GeneComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneComparatorTest.java
@@ -1,17 +1,16 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
+
 public class GeneComparatorTest {
 
 	GeneComparator	comparator	= new GeneComparator();
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/GeneTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneTest.java
similarity index 86%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/GeneTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneTest.java
index d1964f7db7..9cd00ce899 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/GeneTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -13,7 +13,9 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class GeneTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/GenericProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProteinTest.java
similarity index 82%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/GenericProteinTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProteinTest.java
index a71219dde6..308a7a8341 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/GenericProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProteinTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class GenericProteinTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/IonChannelProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProteinTest.java
similarity index 82%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/IonChannelProteinTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProteinTest.java
index 211c9dd81c..df94d86afb 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/IonChannelProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProteinTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.IonChannelProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class IonChannelProteinTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/IonComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonComparatorTest.java
similarity index 86%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/IonComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonComparatorTest.java
index c81434ca60..a55e4fb58c 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/IonComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.IonComparator;
 
 public class IonComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/IonTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonTest.java
similarity index 83%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/IonTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonTest.java
index 03de3ea919..d97de2bcb6 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/IonTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class IonTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/ModificationResidueTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ModificationResidueTest.java
similarity index 92%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/fields/ModificationResidueTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ModificationResidueTest.java
index e3b41d4e7e..1690e144ac 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/ModificationResidueTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ModificationResidueTest.java
@@ -1,155 +1,155 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-
-import org.apache.commons.lang3.SerializationUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Species;
-
-public class ModificationResidueTest {
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testSerialization() {
-		try {
-			SerializationUtils.serialize(new ModificationResidue());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testConstructor() {
-		try {
-			ModificationResidue original = new ModificationResidue();
-			ModificationResidue copy = new ModificationResidue(original);
-			assertNotNull(copy);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testUpdate() {
-		try {
-			ModificationResidue original = new ModificationResidue();
-			ModificationResidue update = new ModificationResidue();
-
-			String name = "n";
-			String side = "s";
-			ModificationState state = ModificationState.ACETYLATED;
-			Double angle = 3.9;
-			Double size = 5.0;
-
-			update.setName(name);
-			update.setSide(side);
-			update.setAngle(angle);
-			update.setSize(size);
-			update.setState(state);
-
-			original.update(update);
-
-			assertEquals(name, original.getName());
-			assertEquals(side, original.getSide());
-			assertEquals(angle, original.getAngle());
-			assertEquals(size, original.getSize());
-			assertEquals(state, original.getState());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetters() {
-		try {
-			ModificationResidue original = new ModificationResidue();
-
-			String doubleStr = "2.0";
-			String invalidDoubleStr = "a2.0";
-			String nullStr = null;
-			Double angle = 2.0;
-			Species species = new Species();
-			int id = 5;
-
-			original.setAngle(doubleStr);
-			assertEquals(angle, original.getAngle(), Configuration.EPSILON);
-			try {
-				original.setAngle(invalidDoubleStr);
-				fail("Exception expected");
-			} catch (InvalidArgumentException e) {
-			}
-			original.setAngle(nullStr);
-			assertNull(original.getAngle());
-
-			original.setSize(doubleStr);
-			assertEquals(angle, original.getSize(), Configuration.EPSILON);
-			try {
-				original.setSize(invalidDoubleStr);
-				fail("Exception expected");
-			} catch (InvalidArgumentException e) {
-			}
-			original.setSize(doubleStr);
-			original.setSize(nullStr);
-			assertNull(original.getSize());
-
-			original.setId(id);
-			assertEquals(id, original.getId());
-
-			original.setSpecies(species);
-			assertEquals(species, original.getSpecies());
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testCopy() {
-		try {
-			ModificationResidue degraded = new ModificationResidue().copy();
-			assertNotNull(degraded);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testInvalidCopy() {
-		try {
-			new ModificationResidue() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
-			fail("Exception expected");
-		} catch (NotImplementedException e) {
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
+package lcsb.mapviewer.converter.model.celldesigner.structure;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import org.apache.commons.lang3.SerializationUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
+
+public class ModificationResidueTest {
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testSerialization() {
+		try {
+			SerializationUtils.serialize(new ModificationResidue());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testConstructor() {
+		try {
+			ModificationResidue original = new ModificationResidue();
+			ModificationResidue copy = new ModificationResidue(original);
+			assertNotNull(copy);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testUpdate() {
+		try {
+			ModificationResidue original = new ModificationResidue();
+			ModificationResidue update = new ModificationResidue();
+
+			String name = "n";
+			String side = "s";
+			ModificationState state = ModificationState.ACETYLATED;
+			Double angle = 3.9;
+			Double size = 5.0;
+
+			update.setName(name);
+			update.setSide(side);
+			update.setAngle(angle);
+			update.setSize(size);
+			update.setState(state);
+
+			original.update(update);
+
+			assertEquals(name, original.getName());
+			assertEquals(side, original.getSide());
+			assertEquals(angle, original.getAngle());
+			assertEquals(size, original.getSize());
+			assertEquals(state, original.getState());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetters() {
+		try {
+			ModificationResidue original = new ModificationResidue();
+
+			String doubleStr = "2.0";
+			String invalidDoubleStr = "a2.0";
+			String nullStr = null;
+			Double angle = 2.0;
+			Species species = new Species();
+			int id = 5;
+
+			original.setAngle(doubleStr);
+			assertEquals(angle, original.getAngle(), Configuration.EPSILON);
+			try {
+				original.setAngle(invalidDoubleStr);
+				fail("Exception expected");
+			} catch (InvalidArgumentException e) {
+			}
+			original.setAngle(nullStr);
+			assertNull(original.getAngle());
+
+			original.setSize(doubleStr);
+			assertEquals(angle, original.getSize(), Configuration.EPSILON);
+			try {
+				original.setSize(invalidDoubleStr);
+				fail("Exception expected");
+			} catch (InvalidArgumentException e) {
+			}
+			original.setSize(doubleStr);
+			original.setSize(nullStr);
+			assertNull(original.getSize());
+
+			original.setId(id);
+			assertEquals(id, original.getId());
+
+			original.setSpecies(species);
+			assertEquals(species, original.getSpecies());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testCopy() {
+		try {
+			ModificationResidue degraded = new ModificationResidue().copy();
+			assertNotNull(degraded);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testInvalidCopy() {
+		try {
+			new ModificationResidue() {
+
+				/**
+				 * 
+				 */
+				private static final long serialVersionUID = 1L;
+			}.copy();
+			fail("Exception expected");
+		} catch (NotImplementedException e) {
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/PhenotypeComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeComparatorTest.java
similarity index 62%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/PhenotypeComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeComparatorTest.java
index 4f9f9861c1..1812f7a3ca 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/PhenotypeComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -10,7 +10,6 @@ import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.fields.AssociatedElement;
 
 public class PhenotypeComparatorTest {
 
@@ -39,11 +38,6 @@ public class PhenotypeComparatorTest {
 			assertEquals(0, comparator.compare(phenotype1, phenotype2));
 			assertEquals(0, comparator.compare(phenotype2, phenotype1));
 
-			phenotype1.addAssociatedElement(new AssociatedElement());
-			phenotype2.addAssociatedElement(new AssociatedElement());
-			assertEquals(0, comparator.compare(phenotype1, phenotype2));
-			assertEquals(0, comparator.compare(phenotype2, phenotype1));
-
 		} catch (Exception e) {
 			e.printStackTrace();
 			fail("Unknowne exception occurred");
@@ -99,35 +93,4 @@ public class PhenotypeComparatorTest {
 		return result;
 	}
 
-	@Test
-	public void testDifferentNewFields() throws Exception {
-		try {
-			Phenotype species1 = createPhenotype();
-			Phenotype species2 = createPhenotype();
-
-			AssociatedElement ae = new AssociatedElement();
-
-			species1.addAssociatedElement(ae);
-			assertTrue(comparator.compare(species1, species2) != 0);
-			assertTrue(comparator.compare(species2, species1) != 0);
-
-			species1 = createPhenotype();
-			species2 = createPhenotype();
-
-			AssociatedElement ae1 = new AssociatedElement();
-			AssociatedElement ae2 = new AssociatedElement();
-
-			ae2.setSource(MiriamType.CHEMBL_COMPOUND);
-
-			species1.addAssociatedElement(ae1);
-			species2.addAssociatedElement(ae2);
-			assertTrue(comparator.compare(species1, species2) != 0);
-			assertTrue(comparator.compare(species2, species1) != 0);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
 }
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/PhenotypeTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeTest.java
similarity index 57%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/PhenotypeTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeTest.java
index 2e8e9f5313..f137ee4d62 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/PhenotypeTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeTest.java
@@ -1,21 +1,14 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.fields.AssociatedElement;
 
 public class PhenotypeTest {
 
@@ -41,9 +34,6 @@ public class PhenotypeTest {
 	public void testConstructor1() {
 		try {
 			Phenotype original = new Phenotype();
-			AssociatedElement ae = new AssociatedElement();
-			ae.setData(new MiriamData(MiriamType.CCDS, "a"));
-			original.addAssociatedElement(ae);
 			Phenotype copy = new Phenotype(original);
 			assertNotNull(copy);
 		} catch (Exception e) {
@@ -52,21 +42,6 @@ public class PhenotypeTest {
 		}
 	}
 
-	@Test
-	public void testGetters() {
-		try {
-			Phenotype phenotype = new Phenotype(new Species());
-			assertNotNull(phenotype.getStringType());
-			List<AssociatedElement> associatedElements = new ArrayList<>();
-			phenotype.setAssociatedElements(associatedElements);
-
-			assertEquals(associatedElements, phenotype.getAssociatedElements());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
 	@Test
 	public void testCopy() {
 		try {
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/PositionToCompartmentTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PositionToCompartmentTest.java
similarity index 80%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/fields/PositionToCompartmentTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PositionToCompartmentTest.java
index cc78192b32..95502105f0 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/PositionToCompartmentTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PositionToCompartmentTest.java
@@ -1,37 +1,39 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class PositionToCompartmentTest {
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testValidValues() {
-		for (PositionToCompartment type : PositionToCompartment.values()) {
-			assertNotNull(type);
-			assertNotNull(type.getStringName());
-
-			// for coverage tests
-			PositionToCompartment.valueOf(type.toString());
-		}
-	}
-
-	@Test
-	public void testGetByString() {
-		assertNotNull(PositionToCompartment.getByString("insideOfMembrane"));
-		assertNull(PositionToCompartment.getByString("insideOfasdasdas"));
-	}
-
-}
+package lcsb.mapviewer.converter.model.celldesigner.structure;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.PositionToCompartment;
+
+public class PositionToCompartmentTest {
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testValidValues() {
+		for (PositionToCompartment type : PositionToCompartment.values()) {
+			assertNotNull(type);
+			assertNotNull(type.getStringName());
+
+			// for coverage tests
+			PositionToCompartment.valueOf(type.toString());
+		}
+	}
+
+	@Test
+	public void testGetByString() {
+		assertNotNull(PositionToCompartment.getByString("insideOfMembrane"));
+		assertNull(PositionToCompartment.getByString("insideOfasdasdas"));
+	}
+
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/ProteinComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinComparatorTest.java
similarity index 83%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/ProteinComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinComparatorTest.java
index dfdb3be78d..b980ff7263 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/ProteinComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinComparatorTest.java
@@ -1,10 +1,14 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationState;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ProteinComparator;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/ProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinTest.java
similarity index 86%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/ProteinTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinTest.java
index deb6067334..6c7acf7e88 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/ProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -13,7 +13,10 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class ProteinTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/ReceptorProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProteinTest.java
similarity index 82%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/ReceptorProteinTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProteinTest.java
index ffc8af66eb..0f9fad6249 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/ReceptorProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProteinTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ReceptorProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class ReceptorProteinTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/RnaComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaComparatorTest.java
similarity index 84%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/RnaComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaComparatorTest.java
index beea204bb9..2466831932 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/RnaComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaComparatorTest.java
@@ -1,12 +1,14 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationState;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.RnaComparator;
+import lcsb.mapviewer.converter.model.celldesigner.structure.RnaRegion;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/RnaRegionTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaRegionTest.java
similarity index 85%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/fields/RnaRegionTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaRegionTest.java
index 76651462d0..f0dc640df0 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/RnaRegionTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaRegionTest.java
@@ -1,134 +1,136 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
-import org.apache.commons.lang3.SerializationUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
-
-public class RnaRegionTest {
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testSerialization() {
-		try {
-			SerializationUtils.serialize(new RnaRegion());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testConstructor() {
-		try {
-			RnaRegion region = new RnaRegion(new RnaRegion());
-			assertNotNull(region);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testSetSize() {
-		try {
-			RnaRegion region = new RnaRegion();
-			try {
-				region.setSize("as");
-				fail("Exception expected");
-			} catch (InvalidArgumentException e) {
-			}
-			region.setSize("0.0");
-			assertEquals(0.0, region.getSize(), Configuration.EPSILON);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testSetPos() {
-		try {
-			RnaRegion region = new RnaRegion();
-			try {
-				region.setPos("as");
-				fail("Exception expected");
-			} catch (InvalidArgumentException e) {
-			}
-			region.setPos("1.0");
-			assertEquals(1.0, region.getPos(), Configuration.EPSILON);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testUpdate() {
-		try {
-			RnaRegion region = new RnaRegion();
-			RnaRegion region2 = new RnaRegion();
-			region2.setState(ModificationState.ACETYLATED);
-			region2.setName("asd");
-			region2.setPos(2.2);
-			region.update(region2);
-			assertEquals(region2.getName(), region.getName());
-			assertEquals(region2.getPos(), region.getPos());
-			assertEquals(region2.getState(), region.getState());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testUpdate2() {
-		try {
-			RnaRegion region = new RnaRegion();
-			region.setIdRnaRegion("1");
-			RnaRegion region2 = new RnaRegion();
-			region2.setIdRnaRegion("2");
-			region.update(region2);
-			fail("Exception expected");
-		} catch (InvalidArgumentException e) {
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetters() {
-		try {
-			RnaRegion region = new RnaRegion();
-			int id = 47;
-			double size = 2.5;
-			Species species = new GenericProtein();
-			region.setId(id);
-			region.setSize(size);
-			region.setSpecies(species);
-			assertEquals(id, region.getId());
-			assertEquals(size, region.getSize(), Configuration.EPSILON);
-			assertEquals(species, region.getSpecies());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-}
+package lcsb.mapviewer.converter.model.celldesigner.structure;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import org.apache.commons.lang3.SerializationUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationState;
+import lcsb.mapviewer.converter.model.celldesigner.structure.RnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+
+public class RnaRegionTest {
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testSerialization() {
+		try {
+			SerializationUtils.serialize(new RnaRegion());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testConstructor() {
+		try {
+			RnaRegion region = new RnaRegion(new RnaRegion());
+			assertNotNull(region);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testSetSize() {
+		try {
+			RnaRegion region = new RnaRegion();
+			try {
+				region.setSize("as");
+				fail("Exception expected");
+			} catch (InvalidArgumentException e) {
+			}
+			region.setSize("0.0");
+			assertEquals(0.0, region.getSize(), Configuration.EPSILON);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testSetPos() {
+		try {
+			RnaRegion region = new RnaRegion();
+			try {
+				region.setPos("as");
+				fail("Exception expected");
+			} catch (InvalidArgumentException e) {
+			}
+			region.setPos("1.0");
+			assertEquals(1.0, region.getPos(), Configuration.EPSILON);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testUpdate() {
+		try {
+			RnaRegion region = new RnaRegion();
+			RnaRegion region2 = new RnaRegion();
+			region2.setState(ModificationState.ACETYLATED);
+			region2.setName("asd");
+			region2.setPos(2.2);
+			region.update(region2);
+			assertEquals(region2.getName(), region.getName());
+			assertEquals(region2.getPos(), region.getPos());
+			assertEquals(region2.getState(), region.getState());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testUpdate2() {
+		try {
+			RnaRegion region = new RnaRegion();
+			region.setIdRnaRegion("1");
+			RnaRegion region2 = new RnaRegion();
+			region2.setIdRnaRegion("2");
+			region.update(region2);
+			fail("Exception expected");
+		} catch (InvalidArgumentException e) {
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetters() {
+		try {
+			RnaRegion region = new RnaRegion();
+			int id = 47;
+			double size = 2.5;
+			Species species = new GenericProtein();
+			region.setId(id);
+			region.setSize(size);
+			region.setSpecies(species);
+			assertEquals(id, region.getId());
+			assertEquals(size, region.getSize(), Configuration.EPSILON);
+			assertEquals(species, region.getSpecies());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/RnaTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaTest.java
similarity index 85%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/RnaTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaTest.java
index 63fbc0f06b..afc4f0748a 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/RnaTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaTest.java
@@ -1,167 +1,170 @@
-package lcsb.mapviewer.model.map.species;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.SerializationUtils;
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
-
-public class RnaTest {
-	Logger logger = Logger.getLogger(RnaTest.class);
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testSerialization() {
-		try {
-			SerializationUtils.serialize(new Rna());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-	
-
-	@Test
-	public void testConstructor1() {
-		try {
-			Rna rna = new Rna(new Species());
-			assertNotNull(rna);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetters() {
-		try {
-			Rna rna = new Rna(new Species());
-			assertNotNull(rna.getStringType());
-			List<RnaRegion> regions = new ArrayList<>();
-
-			rna.setRegions(regions);
-
-			assertEquals(regions, rna.getRegions());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testCopy() {
-		try {
-			Rna rna = new Rna().copy();
-			assertNotNull(rna);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testInvalidCopy() {
-		try {
-			new Rna() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
-			fail("Exception expected");
-		} catch (NotImplementedException e) {
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-
-	@Test
-	public void testAddRnaRegion() {
-		try {
-			Rna original = new Rna();
-			RnaRegion region = new RnaRegion();
-			region.setIdRnaRegion("id1");
-			original.addRegion(region);
-
-			RnaRegion region2 = new RnaRegion();
-			region2.setIdRnaRegion("id1");
-			region2.setName("nam");
-			original.addRegion(region2);
-
-			assertEquals(1, original.getRegions().size());
-
-			assertEquals("nam", original.getRegions().get(0).getName());
-
-			RnaRegion region3 = new RnaRegion();
-			region3.setIdRnaRegion("id2");
-			region3.setName("nam");
-			original.addRegion(region3);
-
-			assertEquals(2, original.getRegions().size());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testUpdate() {
-		try {
-			Rna original = new Rna();
-			RnaRegion region2 = new RnaRegion();
-			region2.setIdRnaRegion("id1");
-			region2.setName("nam");
-			original.addRegion(region2);
-			RnaRegion region3 = new RnaRegion();
-			region3.setIdRnaRegion("id2");
-			region3.setName("nam");
-			original.addRegion(region3);
-
-			Rna copy = new Rna(original);
-			copy.addRegion(new RnaRegion());
-			copy.getRegions().get(0).setState(ModificationState.ACETYLATED);
-			
-			logger.debug(copy.getRegions().size());
-
-			original.update(copy);
-
-			boolean acetylatedFound = false;
-			for (RnaRegion region : copy.getRegions()) {
-				if (ModificationState.ACETYLATED.equals(region.getState())) {
-					acetylatedFound = true;
-				}
-			}
-			assertTrue(acetylatedFound);
-			assertEquals(3, original.getRegions().size());
-			assertEquals(3, copy.getRegions().size());
-
-			original.update(new GenericProtein());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
+package lcsb.mapviewer.converter.model.celldesigner.structure;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.SerializationUtils;
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationState;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.RnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+
+public class RnaTest {
+	Logger logger = Logger.getLogger(RnaTest.class);
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testSerialization() {
+		try {
+			SerializationUtils.serialize(new Rna());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+	
+
+	@Test
+	public void testConstructor1() {
+		try {
+			Rna rna = new Rna(new Species());
+			assertNotNull(rna);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetters() {
+		try {
+			Rna rna = new Rna(new Species());
+			assertNotNull(rna.getStringType());
+			List<RnaRegion> regions = new ArrayList<>();
+
+			rna.setRegions(regions);
+
+			assertEquals(regions, rna.getRegions());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testCopy() {
+		try {
+			Rna rna = new Rna().copy();
+			assertNotNull(rna);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testInvalidCopy() {
+		try {
+			new Rna() {
+
+				/**
+				 * 
+				 */
+				private static final long serialVersionUID = 1L;
+			}.copy();
+			fail("Exception expected");
+		} catch (NotImplementedException e) {
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+
+	@Test
+	public void testAddRnaRegion() {
+		try {
+			Rna original = new Rna();
+			RnaRegion region = new RnaRegion();
+			region.setIdRnaRegion("id1");
+			original.addRegion(region);
+
+			RnaRegion region2 = new RnaRegion();
+			region2.setIdRnaRegion("id1");
+			region2.setName("nam");
+			original.addRegion(region2);
+
+			assertEquals(1, original.getRegions().size());
+
+			assertEquals("nam", original.getRegions().get(0).getName());
+
+			RnaRegion region3 = new RnaRegion();
+			region3.setIdRnaRegion("id2");
+			region3.setName("nam");
+			original.addRegion(region3);
+
+			assertEquals(2, original.getRegions().size());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testUpdate() {
+		try {
+			Rna original = new Rna();
+			RnaRegion region2 = new RnaRegion();
+			region2.setIdRnaRegion("id1");
+			region2.setName("nam");
+			original.addRegion(region2);
+			RnaRegion region3 = new RnaRegion();
+			region3.setIdRnaRegion("id2");
+			region3.setName("nam");
+			original.addRegion(region3);
+
+			Rna copy = new Rna(original);
+			copy.addRegion(new RnaRegion());
+			copy.getRegions().get(0).setState(ModificationState.ACETYLATED);
+			
+			logger.debug(copy.getRegions().size());
+
+			original.update(copy);
+
+			boolean acetylatedFound = false;
+			for (RnaRegion region : copy.getRegions()) {
+				if (ModificationState.ACETYLATED.equals(region.getState())) {
+					acetylatedFound = true;
+				}
+			}
+			assertTrue(acetylatedFound);
+			assertEquals(3, original.getRegions().size());
+			assertEquals(3, copy.getRegions().size());
+
+			original.update(new GenericProtein());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/SimpleMoleculeComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeComparatorTest.java
similarity index 91%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/SimpleMoleculeComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeComparatorTest.java
index 729d959778..06e688cf76 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/SimpleMoleculeComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMoleculeComparator;
 
 public class SimpleMoleculeComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/SimpleMoleculeTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeTest.java
similarity index 83%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/SimpleMoleculeTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeTest.java
index ade7b468f0..82db2cc5d4 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/SimpleMoleculeTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 
 public class SimpleMoleculeTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/SpeciesComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesComparatorTest.java
similarity index 84%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/SpeciesComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesComparatorTest.java
index 70ef5263e9..418cbaf994 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/SpeciesComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -9,10 +9,19 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidClassException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.PositionToCompartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SpeciesComparator;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.fields.PositionToCompartment;
 
 public class SpeciesComparatorTest {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesStateTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesStateTest.java
index 8efc570bf1..882a0b0e68 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesStateTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesStateTest.java
@@ -15,7 +15,6 @@ import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaRegionAlias;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 
 public class SpeciesStateTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/SpeciesTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesTest.java
similarity index 94%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/SpeciesTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesTest.java
index cb3b3ec810..611c1d97bc 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/SpeciesTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -14,6 +14,7 @@ import org.junit.Test;
 import lcsb.mapviewer.ModelTestFunctions;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.MiriamData;
 
 public class SpeciesTest extends ModelTestFunctions {
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/TruncatedProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProteinTest.java
similarity index 82%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/TruncatedProteinTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProteinTest.java
index c0c0743d30..90ebc9489c 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/TruncatedProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProteinTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.TruncatedProtein;
 
 public class TruncatedProteinTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/UnknownComparatorTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownComparatorTest.java
similarity index 86%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/UnknownComparatorTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownComparatorTest.java
index 87ae8c8b1a..009dd1d89e 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/UnknownComparatorTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownComparatorTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
+import lcsb.mapviewer.converter.model.celldesigner.structure.UnknownComparator;
 
 public class UnknownComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/UnknownTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownTest.java
similarity index 83%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/UnknownTest.java
rename to converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownTest.java
index 5caa89237a..24ac6f9abf 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/UnknownTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map.species;
+package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -9,6 +9,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 
 public class UnknownTest {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java
index db4717bce5..e27cfaae40 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java
@@ -16,8 +16,9 @@ import org.junit.Test;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.graphics.PolylineData;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.AndOperator;
@@ -26,7 +27,6 @@ import lcsb.mapviewer.model.map.reaction.NodeOperator;
 import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class ModifierTypeUtilsTest {
 
diff --git a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporter.java b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporter.java
index 26b277c84f..a270247ead 100644
--- a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporter.java
+++ b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporter.java
@@ -28,8 +28,10 @@ import org.sbgn.bindings.Sbgn;
 import lcsb.mapviewer.common.comparator.DoubleComparator;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.converter.graphics.reaction.ReactionConverter;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.graphics.ArrowType;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
@@ -71,8 +73,6 @@ import lcsb.mapviewer.model.map.reaction.type.ReducedPhysicalStimulationReaction
 import lcsb.mapviewer.model.map.reaction.type.ReducedTriggerReaction;
 import lcsb.mapviewer.model.map.reaction.type.StateTransitionReaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownTransitionReaction;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParser.java b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParser.java
index 888a736864..9e9b45f3a4 100644
--- a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParser.java
+++ b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParser.java
@@ -29,6 +29,18 @@ import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
 import lcsb.mapviewer.converter.graphics.species.SpeciesConverter;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierTypeUtils;
 import lcsb.mapviewer.converter.model.sbgnml.structures.Process;
@@ -36,10 +48,10 @@ import lcsb.mapviewer.model.graphics.ArrowType;
 import lcsb.mapviewer.model.graphics.ArrowTypeData;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.graphics.PolylineData;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.alias.SquareCompartmentAlias;
 import lcsb.mapviewer.model.map.model.Model;
@@ -64,18 +76,6 @@ import lcsb.mapviewer.model.map.reaction.type.ReducedPhysicalStimulationReaction
 import lcsb.mapviewer.model.map.reaction.type.ReducedTriggerReaction;
 import lcsb.mapviewer.model.map.reaction.type.StateTransitionReaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownTransitionReaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.Unknown;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 
 /**
  * This class is a parser for SBGN-ML files.
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AliasConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AliasConverter.java
index 4d0ed68462..43255ebac4 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AliasConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AliasConverter.java
@@ -27,33 +27,29 @@ import lcsb.mapviewer.converter.graphics.species.RnaConverter;
 import lcsb.mapviewer.converter.graphics.species.SBGNNucleicAcidFeatureConverter;
 import lcsb.mapviewer.converter.graphics.species.SimpleMoleculeConverter;
 import lcsb.mapviewer.converter.graphics.species.UnknownConverter;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.ArtifitialCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.BottomSquareCompartmentAlias;
+import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
+import lcsb.mapviewer.model.map.layout.alias.DegradedAlias;
+import lcsb.mapviewer.model.map.layout.alias.DrugAlias;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
+import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
+import lcsb.mapviewer.model.map.layout.alias.IonAlias;
+import lcsb.mapviewer.model.map.layout.alias.IonChannelProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.LeftSquareCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.OvalCompartmentAlias;
+import lcsb.mapviewer.model.map.layout.alias.PhenotypeAlias;
+import lcsb.mapviewer.model.map.layout.alias.ReceptorProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RightSquareCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
+import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
 import lcsb.mapviewer.model.map.layout.alias.SquareCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.TopSquareCompartmentAlias;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.IonChannelProtein;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.ReceptorProtein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.TruncatedProtein;
-import lcsb.mapviewer.model.map.species.Unknown;
+import lcsb.mapviewer.model.map.layout.alias.TruncatedProteinAlias;
+import lcsb.mapviewer.model.map.layout.alias.UnknownAlias;
 
 /**
  * This class is designed to convert any type of alias into a graphic glyph that
@@ -68,7 +64,7 @@ public class AliasConverter implements IAliasConverter<Alias> {
 	/**
 	 * Default class logger.
 	 */
-	private static Logger																						 logger						 = Logger.getLogger(AliasConverter.class.getName());
+	private static Logger																					 logger					 = Logger.getLogger(AliasConverter.class.getName());
 
 	// *****************************************************************
 	//
@@ -76,39 +72,31 @@ public class AliasConverter implements IAliasConverter<Alias> {
 	//
 	// *****************************************************************
 
-	/**
-	 * Static map of graphic alias converters used for conversion of aliases. Key
-	 * in this map is a class of element to which alias reference to. Value is
-	 * instance of a converter that can process the alias with the specific
-	 * element type reference.
-	 */
-	private static Map<Class<? extends Element>, IAliasConverter<?>> elementConverters = new HashMap<Class<? extends Element>, IAliasConverter<?>>();
-
 	/**
 	 * Static map of graphic alias converters used for conversion of aliases. Key
 	 * in this map is a class of alias. Value is the converter that can process
 	 * this type of alias.
 	 */
-	private static Map<Class<? extends Alias>, IAliasConverter<?>>	 aliasConverters	 = new HashMap<Class<? extends Alias>, IAliasConverter<?>>();
+	private static Map<Class<? extends Alias>, IAliasConverter<?>> aliasConverters = new HashMap<Class<? extends Alias>, IAliasConverter<?>>();
 
 	static {
 		// at the beginning lets add all implemented aliases
 
 		// for element reference
-		addElementConverter(GenericProtein.class, new ProteinConverter());
-		addElementConverter(IonChannelProtein.class, new ProteinConverter());
-		addElementConverter(ReceptorProtein.class, new ProteinConverter());
-		addElementConverter(TruncatedProtein.class, new ProteinConverter());
-		addElementConverter(Degraded.class, new DegradedConverter());
-		addElementConverter(ComplexSpecies.class, new ComplexConverter());
-		addElementConverter(SimpleMolecule.class, new SimpleMoleculeConverter());
-		addElementConverter(Drug.class, new DrugConverter());
-		addElementConverter(Ion.class, new IonConverter());
-		addElementConverter(Phenotype.class, new PhenotypeConverter());
-		addElementConverter(Rna.class, new RnaConverter());
-		addElementConverter(AntisenseRna.class, new AntisenseRnaConverter());
-		addElementConverter(Gene.class, new GeneConverter());
-		addElementConverter(Unknown.class, new UnknownConverter());
+		addAliasConverter(GenericProteinAlias.class, new ProteinConverter());
+		addAliasConverter(IonChannelProteinAlias.class, new ProteinConverter());
+		addAliasConverter(ReceptorProteinAlias.class, new ProteinConverter());
+		addAliasConverter(TruncatedProteinAlias.class, new ProteinConverter());
+		addAliasConverter(DegradedAlias.class, new DegradedConverter());
+		addAliasConverter(ComplexAlias.class, new ComplexConverter());
+		addAliasConverter(SimpleMoleculeAlias.class, new SimpleMoleculeConverter());
+		addAliasConverter(DrugAlias.class, new DrugConverter());
+		addAliasConverter(IonAlias.class, new IonConverter());
+		addAliasConverter(PhenotypeAlias.class, new PhenotypeConverter());
+		addAliasConverter(RnaAlias.class, new RnaConverter());
+		addAliasConverter(AntisenseRnaAlias.class, new AntisenseRnaConverter());
+		addAliasConverter(GeneAlias.class, new GeneConverter());
+		addAliasConverter(UnknownAlias.class, new UnknownConverter());
 
 		// for compartment aliases
 		addAliasConverter(SquareCompartmentAlias.class, new SquareCompartmentConverter());
@@ -121,21 +109,6 @@ public class AliasConverter implements IAliasConverter<Alias> {
 
 	}
 
-	/**
-	 * Method that set a converter for element referenced by alias to process.
-	 * 
-	 * @param clazz
-	 *          class type of element referenced by alias
-	 * @param converter
-	 *          converter that should be used for conversion of this alias
-	 */
-	protected static void addElementConverter(final Class<? extends Element> clazz, final IAliasConverter<?> converter) {
-		if (elementConverters.get(clazz) != null) {
-			logger.warn("Converter for " + clazz + " has been already added");
-		}
-		elementConverters.put(clazz, converter);
-	}
-
 	/**
 	 * Method that set a converter for specific alias type.
 	 * 
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/AntisenseRnaConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/AntisenseRnaConverter.java
index b1ca0be507..ebfb0c2dcc 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/AntisenseRnaConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/AntisenseRnaConverter.java
@@ -11,16 +11,13 @@ import java.awt.geom.Path2D;
 import java.awt.geom.PathIterator;
 import java.awt.geom.Point2D;
 
+import org.apache.log4j.Logger;
+
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
-
-import org.apache.log4j.Logger;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 
 /**
  * This class defines methods used for drawing Antisense Rna SpeciesAlias on the
@@ -35,7 +32,7 @@ public class AntisenseRnaConverter extends SpeciesConverter<AntisenseRnaAlias> {
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(AntisenseRnaConverter.class.getName());
+	private static Logger logger = Logger.getLogger(AntisenseRnaConverter.class.getName());
 
 	@Override
 	public void drawAlias(final AntisenseRnaAlias alias, final Graphics2D graphics, final ConverterParams params) {
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/GeneConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/GeneConverter.java
index 2419143dcd..fecd7d7777 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/GeneConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/GeneConverter.java
@@ -17,7 +17,7 @@ import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 
 /**
  * This class defines methods used for drawing Gene SpeciesAlias on the
@@ -31,7 +31,7 @@ public class GeneConverter extends SpeciesConverter<GeneAlias> {
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(GeneConverter.class.getName());
+	private static Logger logger = Logger.getLogger(GeneConverter.class.getName());
 
 	@Override
 	public void drawAlias(final GeneAlias alias, final Graphics2D graphics, final ConverterParams params) {
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/IonConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/IonConverter.java
index 7f0f3e644c..1b0dd1ac47 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/IonConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/IonConverter.java
@@ -1,111 +1,111 @@
-package lcsb.mapviewer.converter.graphics.species;
-
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.Shape;
-import java.awt.Stroke;
-import java.awt.geom.Ellipse2D;
-import java.awt.geom.PathIterator;
-import java.awt.geom.Point2D;
-
-import lcsb.mapviewer.common.exception.InvalidStateException;
-import lcsb.mapviewer.converter.graphics.ConverterParams;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-
-import org.apache.log4j.Logger;
-
-/**
- * This class defines methods used for drawing SpeciesAlias of
- * {@link lcsb.mapviewer.db.model.map.species.Ion Ion} on the {@link Graphics2D}
- * object.
- * 
- * @author Piotr Gawron
- * 
- */
-public class IonConverter extends SpeciesConverter<SpeciesAlias> {
-	/**
-	 * Default class logger.
-	 */
-	private static Logger	logger	= Logger.getLogger(IonConverter.class.getName());
-
-	@Override
-	public void drawAlias(final SpeciesAlias alias, final Graphics2D graphics, final ConverterParams params) {
-		double diameter = getDiameter(alias);
-		double x = getXCoord(alias, diameter);
-		double y = getYCoord(alias);
-		Shape shape = new Ellipse2D.Double(x, y, diameter, diameter);
-		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
-		graphics.fill(shape);
-		graphics.setColor(c);
-		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
-		graphics.draw(shape);
-		graphics.setStroke(stroke);
-		drawText(alias, graphics, params);
-	}
-
-	/**
-	 * Returns transformed y coordinate for the ion alias.
-	 * 
-	 * @param alias
-	 *          object alias to to which we are looking for y coordinate
-	 * @return y coordinate of the alias
-	 */
-	private double getYCoord(final Alias alias) {
-		double y = alias.getY();
-		return y;
-	}
-
-	/**
-	 * Returns transformed x coordinate for the ion alias.
-	 * 
-	 * @param alias
-	 *          object alias to to which we are looking for x coordinate
-	 * @param diameter
-	 *          diameter of circle representation of ion
-	 * @return x coordinate of the alias
-	 */
-	private double getXCoord(final Alias alias, final double diameter) {
-		double x = alias.getX() + (alias.getWidth() - diameter) / 2;
-		return x;
-	}
-
-	/**
-	 * Returns diameter of circle representation of ion.
-	 * 
-	 * @param alias
-	 *          object alias to to which we are looking for diameter.
-	 * @return diameter of ion circle representation
-	 */
-	private double getDiameter(final Alias alias) {
-		double diameter = Math.min(alias.getWidth(), alias.getHeight());
-		if (diameter < 0) {
-			logger.warn("Something is wrong. Size cannot be negative");
-			diameter = 0;
-		}
-
-		return diameter;
-	}
-
-	@Override
-	public PathIterator getBoundPathIterator(final SpeciesAlias alias) {
-		throw new InvalidStateException("This class doesn't have bound");
-	}
-
-	@Override
-	public Point2D getPointCoordinatesOnBorder(final SpeciesAlias alias, final double angle) {
-		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
-			logger.warn("Looking for coordinates for the alias with 0 size");
-			return alias.getCenter();
-		}
-		double diameter = getDiameter(alias);
-		double x = getXCoord(alias, diameter);
-		double y = getYCoord(alias);
-		Point2D result = getEllipseTransformation().getPointOnEllipseByRadian(x, y, diameter, diameter, angle);
-		return result;
-
-	}
-
-}
+package lcsb.mapviewer.converter.graphics.species;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.Stroke;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Point2D;
+
+import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
+
+import org.apache.log4j.Logger;
+
+/**
+ * This class defines methods used for drawing SpeciesAlias of
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.Ion Ion} on the {@link Graphics2D}
+ * object.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class IonConverter extends SpeciesConverter<SpeciesAlias> {
+	/**
+	 * Default class logger.
+	 */
+	private static Logger	logger	= Logger.getLogger(IonConverter.class.getName());
+
+	@Override
+	public void drawAlias(final SpeciesAlias alias, final Graphics2D graphics, final ConverterParams params) {
+		double diameter = getDiameter(alias);
+		double x = getXCoord(alias, diameter);
+		double y = getYCoord(alias);
+		Shape shape = new Ellipse2D.Double(x, y, diameter, diameter);
+		Color c = graphics.getColor();
+		graphics.setColor(alias.getColor());
+		graphics.fill(shape);
+		graphics.setColor(c);
+		Stroke stroke = graphics.getStroke();
+		graphics.setStroke(getBorderLine(alias));
+		graphics.draw(shape);
+		graphics.setStroke(stroke);
+		drawText(alias, graphics, params);
+	}
+
+	/**
+	 * Returns transformed y coordinate for the ion alias.
+	 * 
+	 * @param alias
+	 *          object alias to to which we are looking for y coordinate
+	 * @return y coordinate of the alias
+	 */
+	private double getYCoord(final Alias alias) {
+		double y = alias.getY();
+		return y;
+	}
+
+	/**
+	 * Returns transformed x coordinate for the ion alias.
+	 * 
+	 * @param alias
+	 *          object alias to to which we are looking for x coordinate
+	 * @param diameter
+	 *          diameter of circle representation of ion
+	 * @return x coordinate of the alias
+	 */
+	private double getXCoord(final Alias alias, final double diameter) {
+		double x = alias.getX() + (alias.getWidth() - diameter) / 2;
+		return x;
+	}
+
+	/**
+	 * Returns diameter of circle representation of ion.
+	 * 
+	 * @param alias
+	 *          object alias to to which we are looking for diameter.
+	 * @return diameter of ion circle representation
+	 */
+	private double getDiameter(final Alias alias) {
+		double diameter = Math.min(alias.getWidth(), alias.getHeight());
+		if (diameter < 0) {
+			logger.warn("Something is wrong. Size cannot be negative");
+			diameter = 0;
+		}
+
+		return diameter;
+	}
+
+	@Override
+	public PathIterator getBoundPathIterator(final SpeciesAlias alias) {
+		throw new InvalidStateException("This class doesn't have bound");
+	}
+
+	@Override
+	public Point2D getPointCoordinatesOnBorder(final SpeciesAlias alias, final double angle) {
+		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
+			logger.warn("Looking for coordinates for the alias with 0 size");
+			return alias.getCenter();
+		}
+		double diameter = getDiameter(alias);
+		double x = getXCoord(alias, diameter);
+		double y = getYCoord(alias);
+		Point2D result = getEllipseTransformation().getPointOnEllipseByRadian(x, y, diameter, diameter, angle);
+		return result;
+
+	}
+
+}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/PhenotypeConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/PhenotypeConverter.java
index 3cacd381fb..217c3f630d 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/PhenotypeConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/PhenotypeConverter.java
@@ -1,73 +1,73 @@
-package lcsb.mapviewer.converter.graphics.species;
-
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.Stroke;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.GeneralPath;
-import java.awt.geom.Path2D;
-import java.awt.geom.PathIterator;
-
-import lcsb.mapviewer.converter.graphics.ConverterParams;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-
-import org.apache.log4j.Logger;
-
-/**
- * This class defines methods used for drawing SpeciesAlias of
- * {@link lcsb.mapviewer.db.model.map.species.Phenotype Phenotype} on the
- * {@link Graphics2D} object.
- * 
- * @author Piotr Gawron
- * 
- */
-public class PhenotypeConverter extends SpeciesConverter<SpeciesAlias> {
-	/**
-	 * Default class logger.
-	 */
-	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(PhenotypeConverter.class.getName());
-
-	@Override
-	public void drawAlias(final SpeciesAlias alias, final Graphics2D graphics, final ConverterParams params) {
-		GeneralPath path = getPhenotypePath(alias);
-
-		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
-		graphics.fill(path);
-		graphics.setColor(c);
-		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
-		graphics.draw(path);
-		graphics.setStroke(stroke);
-		drawText(alias, graphics, params);
-	}
-
-	/**
-	 * Returns shape of the Phenotype as a GeneralPath object.
-	 * 
-	 * @param alias
-	 *          alias for which we are looking for a border
-	 * @return GeneralPath object defining border of the given alias
-	 */
-	private GeneralPath getPhenotypePath(final Alias alias) {
-		// CHECKSTYLE:OFF
-		GeneralPath path = new GeneralPath(Path2D.WIND_EVEN_ODD, 6);
-		path.moveTo(alias.getX() + alias.getWidth() / 6, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth() * 5 / 6, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth(), alias.getY() + alias.getHeight() / 2);
-		path.lineTo(alias.getX() + alias.getWidth() * 5 / 6, alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX() + alias.getWidth() / 6, alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX(), alias.getY() + alias.getHeight() / 2);
-		// CHECKSTYLE:ON
-		path.closePath();
-		return path;
-	}
-
-	@Override
-	public PathIterator getBoundPathIterator(final SpeciesAlias alias) {
-		return getPhenotypePath(alias).getPathIterator(new AffineTransform());
-	}
-
-}
+package lcsb.mapviewer.converter.graphics.species;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Stroke;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Path2D;
+import java.awt.geom.PathIterator;
+
+import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
+
+import org.apache.log4j.Logger;
+
+/**
+ * This class defines methods used for drawing SpeciesAlias of
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.Phenotype Phenotype} on the
+ * {@link Graphics2D} object.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class PhenotypeConverter extends SpeciesConverter<SpeciesAlias> {
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private static Logger	logger	= Logger.getLogger(PhenotypeConverter.class.getName());
+
+	@Override
+	public void drawAlias(final SpeciesAlias alias, final Graphics2D graphics, final ConverterParams params) {
+		GeneralPath path = getPhenotypePath(alias);
+
+		Color c = graphics.getColor();
+		graphics.setColor(alias.getColor());
+		graphics.fill(path);
+		graphics.setColor(c);
+		Stroke stroke = graphics.getStroke();
+		graphics.setStroke(getBorderLine(alias));
+		graphics.draw(path);
+		graphics.setStroke(stroke);
+		drawText(alias, graphics, params);
+	}
+
+	/**
+	 * Returns shape of the Phenotype as a GeneralPath object.
+	 * 
+	 * @param alias
+	 *          alias for which we are looking for a border
+	 * @return GeneralPath object defining border of the given alias
+	 */
+	private GeneralPath getPhenotypePath(final Alias alias) {
+		// CHECKSTYLE:OFF
+		GeneralPath path = new GeneralPath(Path2D.WIND_EVEN_ODD, 6);
+		path.moveTo(alias.getX() + alias.getWidth() / 6, alias.getY());
+		path.lineTo(alias.getX() + alias.getWidth() * 5 / 6, alias.getY());
+		path.lineTo(alias.getX() + alias.getWidth(), alias.getY() + alias.getHeight() / 2);
+		path.lineTo(alias.getX() + alias.getWidth() * 5 / 6, alias.getY() + alias.getHeight());
+		path.lineTo(alias.getX() + alias.getWidth() / 6, alias.getY() + alias.getHeight());
+		path.lineTo(alias.getX(), alias.getY() + alias.getHeight() / 2);
+		// CHECKSTYLE:ON
+		path.closePath();
+		return path;
+	}
+
+	@Override
+	public PathIterator getBoundPathIterator(final SpeciesAlias alias) {
+		return getPhenotypePath(alias).getPathIterator(new AffineTransform());
+	}
+
+}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/ProteinConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/ProteinConverter.java
index 9baf37c177..be62fa2f7b 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/ProteinConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/ProteinConverter.java
@@ -25,15 +25,11 @@ import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.IonChannelProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ModificationResidueAlias;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ReceptorProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.alias.TruncatedProteinAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.IonChannelProtein;
-import lcsb.mapviewer.model.map.species.ReceptorProtein;
-import lcsb.mapviewer.model.map.species.TruncatedProtein;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/RnaConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/RnaConverter.java
index 177559f4fe..0e0c06e2b3 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/RnaConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/RnaConverter.java
@@ -15,15 +15,14 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaRegionAlias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 
 /**
  * This class defines methods used for drawing SpeciesAlias of
- * {@link lcsb.mapviewer.db.model.map.species.Rna Rna} on the {@link Graphics2D}
- * object.
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.Rna
+ * Rna} on the {@link Graphics2D} object.
  * 
  * @author Piotr Gawron
  * 
@@ -33,7 +32,7 @@ public class RnaConverter extends SpeciesConverter<RnaAlias> {
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(RnaConverter.class.getName());
+	private static Logger logger = Logger.getLogger(RnaConverter.class.getName());
 
 	@Override
 	public void drawAlias(final RnaAlias alias, final Graphics2D graphics, final ConverterParams params) {
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/SBGNNucleicAcidFeatureConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/SBGNNucleicAcidFeatureConverter.java
index 0eb77c8dbb..25252c4945 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/SBGNNucleicAcidFeatureConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/SBGNNucleicAcidFeatureConverter.java
@@ -11,44 +11,40 @@ import java.awt.geom.PathIterator;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
- * This class defines methods used for drawing SpeciesAlias of
- * nucleic acid feature in the SBGN way on the
- * {@link Graphics2D} object.
+ * This class defines methods used for drawing SpeciesAlias of nucleic acid
+ * feature in the SBGN way on the {@link Graphics2D} object.
  * 
  * @author Michał Kuźma
  *
  */
 
 public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<SpeciesAlias> {
-	
+
 	/**
-	 * How big should be the arc in rectangle for nucleic acid feature representation.
+	 * How big should be the arc in rectangle for nucleic acid feature
+	 * representation.
 	 */
-	private static final int	RECTANGLE_CORNER_ARC_SIZE	= 5;
+	private static final int RECTANGLE_CORNER_ARC_SIZE = 5;
 
 	/**
 	 * Returns shape of SBGN Nucleic acid feature.
+	 * 
 	 * @param alias
-	 * 					alias for which the shape should be returned
-	 * @return
-	 * 					shape of the SBGN Nucleic acid feature for given alias
+	 *          alias for which the shape should be returned
+	 * @return shape of the SBGN Nucleic acid feature for given alias
 	 */
 	private Shape getShape(final Alias alias) {
 		GeneralPath bottomRoundedRectangle = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
 		double x = alias.getX(), y = alias.getY(), width = alias.getWidth(), height = alias.getHeight();
-		
+
 		bottomRoundedRectangle.moveTo(x, y);
 		bottomRoundedRectangle.lineTo(x, y + height - RECTANGLE_CORNER_ARC_SIZE);
-		bottomRoundedRectangle.curveTo(x, y + height,
-																		x + RECTANGLE_CORNER_ARC_SIZE, y + height,
-																		x + RECTANGLE_CORNER_ARC_SIZE, y + height);
+		bottomRoundedRectangle.curveTo(x, y + height, x + RECTANGLE_CORNER_ARC_SIZE, y + height, x + RECTANGLE_CORNER_ARC_SIZE, y + height);
 		bottomRoundedRectangle.lineTo(x + width - RECTANGLE_CORNER_ARC_SIZE, y + height);
-		bottomRoundedRectangle.curveTo(x + width, y + height,
-																		x + width, y + height - RECTANGLE_CORNER_ARC_SIZE,
-																		x + width, y + height - RECTANGLE_CORNER_ARC_SIZE);
+		bottomRoundedRectangle
+				.curveTo(x + width, y + height, x + width, y + height - RECTANGLE_CORNER_ARC_SIZE, x + width, y + height - RECTANGLE_CORNER_ARC_SIZE);
 		bottomRoundedRectangle.lineTo(x + width, y);
 		bottomRoundedRectangle.closePath();
 		return bottomRoundedRectangle;
@@ -56,7 +52,7 @@ public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<SpeciesAli
 
 	@Override
 	public void drawAlias(SpeciesAlias alias, Graphics2D graphics, ConverterParams params) {
-		//Unit of information text - multimer cardinality
+		// Unit of information text - multimer cardinality
 		String unitOfInformationText = null;
 		if (alias.getAliasStatePrefix() != null && alias.getAliasStateLabel() != null) {
 			if (alias.getAliasStatePrefix().equals("free input")) {
@@ -65,15 +61,15 @@ public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<SpeciesAli
 				unitOfInformationText = alias.getAliasStatePrefix() + ":" + alias.getAliasStateLabel();
 			}
 		}
-		
+
 		int homodir = alias.getHomodimer();
-		
+
 		alias.setWidth(alias.getWidth() - SpeciesConverter.HOMODIMER_OFFSET * (alias.getHomodimer() - 1));
 		alias.setHeight(alias.getHeight() - SpeciesConverter.HOMODIMER_OFFSET * (alias.getHomodimer() - 1));
-		
+
 		alias.setX(alias.getX() + SpeciesConverter.HOMODIMER_OFFSET * homodir);
 		alias.setY(alias.getY() + SpeciesConverter.HOMODIMER_OFFSET * homodir);
-		
+
 		int glyphCount;
 		if (homodir > 1) {
 			glyphCount = 2;
@@ -83,19 +79,19 @@ public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<SpeciesAli
 		for (int i = 0; i < glyphCount; i++) {
 			alias.setX(alias.getX() - SpeciesConverter.HOMODIMER_OFFSET);
 			alias.setY(alias.getY() - SpeciesConverter.HOMODIMER_OFFSET);
-			
+
 			Shape shape = getShape(alias);
-			
+
 			Color c = graphics.getColor();
 			graphics.setColor(alias.getColor());
 			graphics.fill(shape);
 			graphics.setColor(c);
-			
+
 			Stroke stroke = graphics.getStroke();
 			graphics.setStroke(getBorderLine(alias));
 			graphics.draw(shape);
 			graphics.setStroke(stroke);
-			
+
 			if (i == 1) {
 				if (homodir > 1 && (unitOfInformationText == null || !unitOfInformationText.contains("N:"))) {
 					if (unitOfInformationText == null) {
@@ -106,12 +102,12 @@ public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<SpeciesAli
 					unitOfInformationText = unitOfInformationText.concat("N:").concat(Integer.toString(homodir));
 				}
 			}
-			
+
 		}
-		
+
 		drawUnitOfInformation(unitOfInformationText, alias, graphics);
 		drawText(alias, graphics, params);
-		
+
 		alias.setWidth(alias.getWidth() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
 		alias.setHeight(alias.getHeight() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
 	}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/SimpleMoleculeConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/SimpleMoleculeConverter.java
index f01f64b1a4..35fed2b238 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/SimpleMoleculeConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/SimpleMoleculeConverter.java
@@ -8,18 +8,16 @@ import java.awt.geom.Ellipse2D;
 import java.awt.geom.PathIterator;
 import java.awt.geom.Point2D;
 
+import org.apache.log4j.Logger;
+
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-
-import org.apache.log4j.Logger;
 
 /**
  * This class defines methods used for drawing SpeciesAlias of
- * {@link lcsb.mapviewer.db.model.map.species.SimpleMolecule SimpleMolecule} on the
- * {@link Graphics2D} object.
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.SimpleMolecule
+ * SimpleMolecule} on the {@link Graphics2D} object.
  * 
  * @author Piotr Gawron
  * 
@@ -28,13 +26,14 @@ public class SimpleMoleculeConverter extends SpeciesConverter<SimpleMoleculeAlia
 	/**
 	 * Default class logger.
 	 */
-	private static Logger	logger	= Logger.getLogger(SimpleMoleculeConverter.class.getName());
+	private static Logger logger = Logger.getLogger(SimpleMoleculeConverter.class.getName());
 
 	@Override
 	public void drawAlias(final SimpleMoleculeAlias alias, final Graphics2D graphics, final ConverterParams params) {
 		int homodir;
 		if (params.isSbgnFormat()) {
-			//If the SBGN display mode is set, multimer is shown as two stacked glyphs
+			// If the SBGN display mode is set, multimer is shown as two stacked
+			// glyphs
 			if (alias.getHomodimer() > 1) {
 				homodir = 2;
 			} else {
@@ -43,16 +42,16 @@ public class SimpleMoleculeConverter extends SpeciesConverter<SimpleMoleculeAlia
 		} else {
 			homodir = alias.getHomodimer();
 		}
-		
+
 		alias.setWidth(alias.getWidth() - SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
 		alias.setHeight(alias.getHeight() - SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
-		
+
 		// SBGN view - simple molecules are represented as circles
 		if (params.isSbgnFormat()) {
 			alias.setX(alias.getX() + (alias.getWidth() - alias.getHeight()) / 2);
 			alias.setWidth(alias.getHeight());
 		}
-		
+
 		alias.setX(alias.getX() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
 		alias.setY(alias.getY() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
 
@@ -68,8 +67,9 @@ public class SimpleMoleculeConverter extends SpeciesConverter<SimpleMoleculeAlia
 			graphics.setStroke(getBorderLine(alias));
 			graphics.draw(shape);
 			graphics.setStroke(stroke);
-			
-			// SBGN view - multimers are displayed with a unit of information containing cardinality
+
+			// SBGN view - multimers are displayed with a unit of information
+			// containing cardinality
 			if (params.isSbgnFormat() && (i == homodir - 1)) {
 				String unitOfInformationText = null;
 				if (alias.getAliasStatePrefix() != null && alias.getAliasStateLabel() != null) {
@@ -83,7 +83,7 @@ public class SimpleMoleculeConverter extends SpeciesConverter<SimpleMoleculeAlia
 					}
 					unitOfInformationText += "N:" + alias.getHomodimer();
 				}
-				
+
 				drawUnitOfInformation(unitOfInformationText, alias, graphics);
 			}
 		}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/UnknownConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/UnknownConverter.java
index ac97a2a4f0..4337fe9367 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/UnknownConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/species/UnknownConverter.java
@@ -1,70 +1,70 @@
-package lcsb.mapviewer.converter.graphics.species;
-
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.Shape;
-import java.awt.Stroke;
-import java.awt.geom.Ellipse2D;
-import java.awt.geom.PathIterator;
-import java.awt.geom.Point2D;
-
-import lcsb.mapviewer.common.exception.InvalidStateException;
-import lcsb.mapviewer.converter.graphics.ConverterParams;
-import lcsb.mapviewer.model.graphics.LineType;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-
-import org.apache.log4j.Logger;
-
-/**
- * This class defines methods used for drawing SpeciesAlias of
- * {@link lcsb.mapviewer.db.model.map.species.Unknown Unknown} on the
- * {@link Graphics2D} object.
- * 
- * @author Piotr Gawron
- * 
- */
-public class UnknownConverter extends SpeciesConverter<SpeciesAlias> {
-	/**
-	 * Default class logger.
-	 */
-	private static Logger	logger	= Logger.getLogger(UnknownConverter.class.getName());
-
-	@Override
-	public void drawAlias(final SpeciesAlias alias, final Graphics2D graphics, final ConverterParams params) {
-		if (alias.getActivity()) {
-			int border = ACTIVITY_BORDER_DISTANCE;
-			alias.increaseBorder(border);
-			Shape shape2 = new Ellipse2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
-			Stroke stroke = graphics.getStroke();
-			graphics.setStroke(LineType.DOTTED.getStroke());
-			graphics.draw(shape2);
-			graphics.setStroke(stroke);
-			alias.increaseBorder(-border);
-		}
-
-		Shape shape = new Ellipse2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
-		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
-		graphics.fill(shape);
-		graphics.setColor(c);
-		drawText(alias, graphics, params);
-	}
-
-	@Override
-	public PathIterator getBoundPathIterator(final SpeciesAlias alias) {
-		throw new InvalidStateException("This class doesn't provide boundPath");
-	}
-
-	@Override
-	public Point2D getPointCoordinatesOnBorder(final SpeciesAlias alias, final double angle) {
-		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
-			logger.warn("Looking for coordinates for unknown of 0 size");
-			return alias.getCenter();
-		}
-		Point2D result;
-		result = getEllipseTransformation().getPointOnEllipseByRadian(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), angle);
-		return result;
-
-	}
-
-}
+package lcsb.mapviewer.converter.graphics.species;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.Stroke;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Point2D;
+
+import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.model.graphics.LineType;
+import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
+
+import org.apache.log4j.Logger;
+
+/**
+ * This class defines methods used for drawing SpeciesAlias of
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.Unknown Unknown} on the
+ * {@link Graphics2D} object.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class UnknownConverter extends SpeciesConverter<SpeciesAlias> {
+	/**
+	 * Default class logger.
+	 */
+	private static Logger	logger	= Logger.getLogger(UnknownConverter.class.getName());
+
+	@Override
+	public void drawAlias(final SpeciesAlias alias, final Graphics2D graphics, final ConverterParams params) {
+		if (alias.getActivity()) {
+			int border = ACTIVITY_BORDER_DISTANCE;
+			alias.increaseBorder(border);
+			Shape shape2 = new Ellipse2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
+			Stroke stroke = graphics.getStroke();
+			graphics.setStroke(LineType.DOTTED.getStroke());
+			graphics.draw(shape2);
+			graphics.setStroke(stroke);
+			alias.increaseBorder(-border);
+		}
+
+		Shape shape = new Ellipse2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
+		Color c = graphics.getColor();
+		graphics.setColor(alias.getColor());
+		graphics.fill(shape);
+		graphics.setColor(c);
+		drawText(alias, graphics, params);
+	}
+
+	@Override
+	public PathIterator getBoundPathIterator(final SpeciesAlias alias) {
+		throw new InvalidStateException("This class doesn't provide boundPath");
+	}
+
+	@Override
+	public Point2D getPointCoordinatesOnBorder(final SpeciesAlias alias, final double angle) {
+		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
+			logger.warn("Looking for coordinates for unknown of 0 size");
+			return alias.getCenter();
+		}
+		Point2D result;
+		result = getEllipseTransformation().getPointOnEllipseByRadian(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), angle);
+		return result;
+
+	}
+
+}
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/NormalImageGeneratorTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/NormalImageGeneratorTest.java
index 80f0a3bfa9..59817921e0 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/NormalImageGeneratorTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/NormalImageGeneratorTest.java
@@ -26,8 +26,6 @@ import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.layout.graphics.LayerText;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class NormalImageGeneratorTest {
 	static Logger logger = Logger.getLogger(NormalImageGenerator.class);
@@ -66,7 +64,7 @@ public class NormalImageGeneratorTest {
 	public void testComplexConversion() throws Exception {
 		scale = null;
 		try {
-			AliasConverter.addElementConverter(ComplexSpecies.class, new TmpComplexConverter());
+			AliasConverter.addAliasConverter(ComplexAlias.class, new TmpComplexConverter());
 
 			Model model = createComplexModel();
 			new CreateHierarchyCommand(model, 2, 2).execute();
@@ -86,24 +84,16 @@ public class NormalImageGeneratorTest {
 		model.setWidth(600);
 		model.setHeight(600);
 
-		ComplexSpecies complex = new ComplexSpecies();
-		complex.setName("a");
-		complex.setElementId("c1");
-
-		ComplexAlias alias = new ComplexAlias(complex);
-		alias.setAliasId("1");
+		ComplexAlias alias = new ComplexAlias("1");
+		alias.setName("a");
 		alias.setX(10);
 		alias.setY(10);
 		alias.setWidth(200);
 		alias.setHeight(50);
 		model.addAlias(alias);
 
-		GenericProtein protein = new GenericProtein();
-		protein.setName("b");
-		protein.setElementId("s1");
-
-		SpeciesAlias a2 = new GenericProteinAlias(protein);
-		a2.setAliasId("2");
+		SpeciesAlias a2 = new GenericProteinAlias("2");
+		a2.setName("b");
 		a2.setX(10);
 		a2.setY(100);
 		a2.setWidth(200);
@@ -159,12 +149,8 @@ public class NormalImageGeneratorTest {
 
 		layer.addLayerLine(new PolylineData(new Point2D.Double(0, 0), new Point2D.Double(100, 100)));
 
-		ComplexSpecies complex = new ComplexSpecies();
-		complex.setName("a");
-		complex.setElementId("c1");
-
-		ComplexAlias alias = new ComplexAlias(complex);
-		alias.setAliasId("1");
+		ComplexAlias alias = new ComplexAlias("1");
+		alias.setName("a");
 		alias.setX(300);
 		alias.setY(90);
 		alias.setWidth(100);
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/PdfImageGeneratorTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/PdfImageGeneratorTest.java
index 574b4bc41d..eeef94d0f5 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/PdfImageGeneratorTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/PdfImageGeneratorTest.java
@@ -8,6 +8,10 @@ import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
 import java.io.File;
 
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
 import lcsb.mapviewer.commands.CreateHierarchyCommand;
 import lcsb.mapviewer.converter.graphics.AbstractImageGenerator.Params;
 import lcsb.mapviewer.model.graphics.PolylineData;
@@ -16,11 +20,6 @@ import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.layout.graphics.LayerText;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
 
 public class PdfImageGeneratorTest {
 
@@ -41,7 +40,7 @@ public class PdfImageGeneratorTest {
 			if (f.exists()) {
 				f.delete();
 			}
-			
+
 			assertFalse(f.exists());
 
 			Model model = createCompartmentModel();
@@ -89,12 +88,8 @@ public class PdfImageGeneratorTest {
 
 		layer.addLayerLine(new PolylineData(new Point2D.Double(0, 0), new Point2D.Double(100, 100)));
 
-		ComplexSpecies complex = new ComplexSpecies();
-		complex.setName("a");
-		complex.setElementId("c1");
-
-		ComplexAlias alias = new ComplexAlias(complex);
-		alias.setAliasId("1");
+		ComplexAlias alias = new ComplexAlias("1");
+		alias.setName("a");
 		alias.setX(300);
 		alias.setY(90);
 		alias.setWidth(100);
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/placefinder/AllPlaceFinderTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/placefinder/AllPlaceFinderTest.java
index 303a4e3379..4acd4cebfd 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/placefinder/AllPlaceFinderTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/placefinder/AllPlaceFinderTest.java
@@ -7,22 +7,21 @@ import java.awt.geom.Rectangle2D;
 import java.io.IOException;
 import java.util.Arrays;
 
+import org.apache.log4j.Logger;
+import org.junit.Test;
+
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.SquareCompartmentAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 
-import org.apache.log4j.Logger;
-import org.junit.Test;
-
 public class AllPlaceFinderTest {
-	Logger				logger	= Logger.getLogger(AllPlaceFinderTest.class);
-	final String	out			= "map_images/testOutput";
-	final String	folder	= "testFiles/placeFinderFiles/";
+	Logger			 logger	= Logger.getLogger(AllPlaceFinderTest.class);
+	final String out		= "map_images/testOutput";
+	final String folder	= "testFiles/placeFinderFiles/";
 
-	int						id			= 10;
+	int					 id			= 10;
 
 	@Test
 	public void oneEmptyCompartments() throws InvalidXmlSchemaException, IOException {
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/species/SpeciesConverterTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/species/SpeciesConverterTest.java
index cb172341f1..1f93051927 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/species/SpeciesConverterTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/species/SpeciesConverterTest.java
@@ -19,8 +19,6 @@ import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.layout.GenericColorSchema;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class SpeciesConverterTest {
 
@@ -40,8 +38,7 @@ public class SpeciesConverterTest {
 					return super.getResidueCoordinates(alias, angle);
 				}
 			}
-			GenericProtein protein = new GenericProtein();
-			GenericProteinAlias alias = new GenericProteinAlias(protein);
+			GenericProteinAlias alias = new GenericProteinAlias("id");
 			alias.setX(135);
 			alias.setY(194.0);
 			alias.setWidth(130);
@@ -180,9 +177,8 @@ public class SpeciesConverterTest {
 	}
 
 	private GenericProteinAlias createAlias() {
-		GenericProtein protein = new GenericProtein();
-		protein.setName("NAME_OF_THE_ELEMENT");
-		GenericProteinAlias alias = new GenericProteinAlias(protein);
+		GenericProteinAlias alias = new GenericProteinAlias("id");
+		alias.setName("NAME_OF_THE_ELEMENT");
 		alias.setX(10);
 		alias.setY(20);
 		alias.setWidth(100);
diff --git a/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java b/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java
index ad071e1810..5abb11d212 100644
--- a/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java
+++ b/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java
@@ -22,6 +22,10 @@ import org.junit.Test;
 import lcsb.mapviewer.common.MimeType;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidClassException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.converter.zip.ModelZipEntryFile;
 import lcsb.mapviewer.converter.zip.ZipEntryFileFactory;
 import lcsb.mapviewer.model.map.InconsistentModelException;
@@ -41,10 +45,6 @@ import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
 
 public class ComplexZipConverterTest {
 	private static Logger logger = Logger.getLogger(ComplexZipConverterTest.class);
diff --git a/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeFormerSymbolCommand.java b/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeFormerSymbolCommand.java
index a0a7ccd0ee..e95dbc3021 100644
--- a/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeFormerSymbolCommand.java
+++ b/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeFormerSymbolCommand.java
@@ -1,49 +1,49 @@
-package lcsb.mapviewer.editor.gui.detailstab;
-
-import java.util.List;
-
-import javax.swing.JList;
-
-import lcsb.mapviewer.commands.ModelCommand;
-import lcsb.mapviewer.commands.properties.AddElementFormerSymbolsCommand;
-import lcsb.mapviewer.commands.properties.ChangeElementFormerSymbolCommand;
-import lcsb.mapviewer.commands.properties.RemoveElementFormerSymbolsCommand;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-
-/**
- * Class that creates commands that modifies
- * {@link lcsb.mapviewer.model.map.Element#formerSymbols} from gui input for
- * given {@link Model} and {@link Alias}.
- * 
- * @author Piotr Gawron
- *
- */
-public class CreateChangeFormerSymbolCommand extends CreateListPropertyChangeCommand<String> {
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param list
-	 *          GUI input from which {@link ModelCommand} will be created
-	 */
-	CreateChangeFormerSymbolCommand(JList<String> list) {
-		super(list);
-	}
-
-	@Override
-	protected ModelCommand createRemoveCommand(Model model, Alias alias, List<String> values) {
-		return new RemoveElementFormerSymbolsCommand(model, alias, values);
-	}
-
-	@Override
-	protected ModelCommand createChangeCommand(Model model, Alias alias, String newValue, String oldValue) {
-		return new ChangeElementFormerSymbolCommand(model, alias, newValue, oldValue);
-	}
-
-	@Override
-	protected ModelCommand createAddCommand(Model model, Alias alias, List<String> newValues) {
-		return new AddElementFormerSymbolsCommand(model, alias, newValues);
-	}
-
-}
+package lcsb.mapviewer.editor.gui.detailstab;
+
+import java.util.List;
+
+import javax.swing.JList;
+
+import lcsb.mapviewer.commands.ModelCommand;
+import lcsb.mapviewer.commands.properties.AddElementFormerSymbolsCommand;
+import lcsb.mapviewer.commands.properties.ChangeElementFormerSymbolCommand;
+import lcsb.mapviewer.commands.properties.RemoveElementFormerSymbolsCommand;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+
+/**
+ * Class that creates commands that modifies
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#formerSymbols} from gui input for
+ * given {@link Model} and {@link Alias}.
+ * 
+ * @author Piotr Gawron
+ *
+ */
+public class CreateChangeFormerSymbolCommand extends CreateListPropertyChangeCommand<String> {
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param list
+	 *          GUI input from which {@link ModelCommand} will be created
+	 */
+	CreateChangeFormerSymbolCommand(JList<String> list) {
+		super(list);
+	}
+
+	@Override
+	protected ModelCommand createRemoveCommand(Model model, Alias alias, List<String> values) {
+		return new RemoveElementFormerSymbolsCommand(model, alias, values);
+	}
+
+	@Override
+	protected ModelCommand createChangeCommand(Model model, Alias alias, String newValue, String oldValue) {
+		return new ChangeElementFormerSymbolCommand(model, alias, newValue, oldValue);
+	}
+
+	@Override
+	protected ModelCommand createAddCommand(Model model, Alias alias, List<String> newValues) {
+		return new AddElementFormerSymbolsCommand(model, alias, newValues);
+	}
+
+}
diff --git a/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeNameCommand.java b/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeNameCommand.java
index 693efb5cd6..fbfe2a23ad 100644
--- a/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeNameCommand.java
+++ b/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeNameCommand.java
@@ -1,31 +1,31 @@
-package lcsb.mapviewer.editor.gui.detailstab;
-
-import javax.swing.JTextField;
-import javax.swing.text.JTextComponent;
-
-import lcsb.mapviewer.commands.ModelCommand;
-import lcsb.mapviewer.commands.properties.ChangeElementNameCommand;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-
-/**
- * Class with method executed when text property of
- * {@link lcsb.mapviewer.model.map.Element} is changed.
- * 
- */
-public class CreateChangeNameCommand extends CreatePropertyChangeCommand {
-	/**
-	 * Default constructor.
-	 * 
-	 * @param field
-	 *          GUI input from which {@link ModelCommand} will be created
-	 */
-	CreateChangeNameCommand(JTextField field) {
-		super(field);
-	}
-
-	@Override
-	public ModelCommand createCommand(Model model, Alias alias) {
-		return new ChangeElementNameCommand(model, alias, ((JTextComponent) getField()).getText());
-	}
-}
+package lcsb.mapviewer.editor.gui.detailstab;
+
+import javax.swing.JTextField;
+import javax.swing.text.JTextComponent;
+
+import lcsb.mapviewer.commands.ModelCommand;
+import lcsb.mapviewer.commands.properties.ChangeElementNameCommand;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+
+/**
+ * Class with method executed when text property of
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element} is changed.
+ * 
+ */
+public class CreateChangeNameCommand extends CreatePropertyChangeCommand {
+	/**
+	 * Default constructor.
+	 * 
+	 * @param field
+	 *          GUI input from which {@link ModelCommand} will be created
+	 */
+	CreateChangeNameCommand(JTextField field) {
+		super(field);
+	}
+
+	@Override
+	public ModelCommand createCommand(Model model, Alias alias) {
+		return new ChangeElementNameCommand(model, alias, ((JTextComponent) getField()).getText());
+	}
+}
diff --git a/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeSynonymCommand.java b/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeSynonymCommand.java
index 3ed3062e4a..e7aec33f5a 100644
--- a/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeSynonymCommand.java
+++ b/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/CreateChangeSynonymCommand.java
@@ -1,49 +1,49 @@
-package lcsb.mapviewer.editor.gui.detailstab;
-
-import java.util.List;
-
-import javax.swing.JList;
-
-import lcsb.mapviewer.commands.ModelCommand;
-import lcsb.mapviewer.commands.properties.AddElementSynonymsCommand;
-import lcsb.mapviewer.commands.properties.ChangeElementSynonymCommand;
-import lcsb.mapviewer.commands.properties.RemoveElementSynonymsCommand;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-
-/**
- * Class that creates commands that modifies
- * {@link lcsb.mapviewer.model.map.Element#synonyms} from gui input for
- * given {@link Model} and {@link Alias}.
- * 
- * @author Piotr Gawron
- *
- */
-public class CreateChangeSynonymCommand extends CreateListPropertyChangeCommand<String> {
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param list
-	 *          GUI input from which {@link ModelCommand} will be created
-	 */
-	CreateChangeSynonymCommand(JList<String> list) {
-		super(list);
-	}
-
-	@Override
-	protected ModelCommand createRemoveCommand(Model model, Alias alias, List<String> values) {
-		return new RemoveElementSynonymsCommand(model, alias, values);
-	}
-
-	@Override
-	protected ModelCommand createChangeCommand(Model model, Alias alias, String newValue, String oldValue) {
-		return new ChangeElementSynonymCommand(model, alias, newValue, oldValue);
-	}
-
-	@Override
-	protected ModelCommand createAddCommand(Model model, Alias alias, List<String> newValues) {
-		return new AddElementSynonymsCommand(model, alias, newValues);
-	}
-
-}
+package lcsb.mapviewer.editor.gui.detailstab;
+
+import java.util.List;
+
+import javax.swing.JList;
+
+import lcsb.mapviewer.commands.ModelCommand;
+import lcsb.mapviewer.commands.properties.AddElementSynonymsCommand;
+import lcsb.mapviewer.commands.properties.ChangeElementSynonymCommand;
+import lcsb.mapviewer.commands.properties.RemoveElementSynonymsCommand;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+
+/**
+ * Class that creates commands that modifies
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonyms} from gui input for
+ * given {@link Model} and {@link Alias}.
+ * 
+ * @author Piotr Gawron
+ *
+ */
+public class CreateChangeSynonymCommand extends CreateListPropertyChangeCommand<String> {
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param list
+	 *          GUI input from which {@link ModelCommand} will be created
+	 */
+	CreateChangeSynonymCommand(JList<String> list) {
+		super(list);
+	}
+
+	@Override
+	protected ModelCommand createRemoveCommand(Model model, Alias alias, List<String> values) {
+		return new RemoveElementSynonymsCommand(model, alias, values);
+	}
+
+	@Override
+	protected ModelCommand createChangeCommand(Model model, Alias alias, String newValue, String oldValue) {
+		return new ChangeElementSynonymCommand(model, alias, newValue, oldValue);
+	}
+
+	@Override
+	protected ModelCommand createAddCommand(Model model, Alias alias, List<String> newValues) {
+		return new AddElementSynonymsCommand(model, alias, newValues);
+	}
+
+}
diff --git a/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/ElementDetailsPanel.java b/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/ElementDetailsPanel.java
index e544119e74..5c02dce650 100644
--- a/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/ElementDetailsPanel.java
+++ b/editor/src/main/java/lcsb/mapviewer/editor/gui/detailstab/ElementDetailsPanel.java
@@ -74,12 +74,12 @@ public class ElementDetailsPanel extends JPanel {
 	private final Logger																 logger								 = Logger.getLogger(ElementDetailsPanel.class);
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#name} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#name} parameter.
 	 */
 	private JLabel																			 nameLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#getElementId()}
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#getElementId()}
 	 * parameter.
 	 */
 	private JLabel																			 idLabel;
@@ -105,53 +105,53 @@ public class ElementDetailsPanel extends JPanel {
 	private JLabel																			 colorLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#notes} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#notes} parameter.
 	 */
 	private JLabel																			 notesLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#symbol} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#symbol} parameter.
 	 */
 	private JLabel																			 symbolLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#fullName} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#fullName} parameter.
 	 */
 	private JLabel																			 fullNameLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#abbreviation} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#abbreviation} parameter.
 	 */
 	private JLabel																			 abbreviationLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#formula} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#formula} parameter.
 	 */
 	private JLabel																			 formulaLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#synonyms} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonyms} parameter.
 	 */
 	private JLabel																			 synonymsLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#formerSymbols} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#formerSymbols} parameter.
 	 */
 	private JLabel																			 formerSymbolsLabel;
 
 	/**
-	 * Label for {@link lcsb.mapviewer.model.map.Element#symbol} parameter.
+	 * Label for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#symbol} parameter.
 	 */
 	private JLabel																			 miriamDataLabel;
 
 	/**
-	 * {@link JTextField} for {@link lcsb.mapviewer.model.map.Element#name}
+	 * {@link JTextField} for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#name}
 	 * parameter.
 	 */
 	private JTextField																	 nameText;
 
 	/**
-	 * {@link JTextField} for {@link lcsb.mapviewer.model.map.Element#name}
+	 * {@link JTextField} for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#name}
 	 * parameter.
 	 */
 	private JTextField																	 idText;
@@ -177,69 +177,69 @@ public class ElementDetailsPanel extends JPanel {
 	private JButton																			colorButton;
 
 	/**
-	 * {@link JTextField} for {@link lcsb.mapviewer.model.map.Element#notes}
+	 * {@link JTextField} for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#notes}
 	 * parameter.
 	 */
 	private JTextArea																		notesText;
 
 	/**
-	 * {@link JTextField} for {@link lcsb.mapviewer.model.map.Element#symbol}
+	 * {@link JTextField} for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#symbol}
 	 * parameter.
 	 */
 	private JTextField																	 symbolText;
 
 	/**
-	 * {@link JTextField} for {@link lcsb.mapviewer.model.map.Element#fullName}
+	 * {@link JTextField} for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#fullName}
 	 * parameter.
 	 */
 	private JTextField																	 fullNameText;
 
 	/**
 	 * {@link JTextField} for
-	 * {@link lcsb.mapviewer.model.map.Element#abbreviation} parameter.
+	 * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#abbreviation} parameter.
 	 */
 	private JTextField																	 abbreviationText;
 
 	/**
-	 * {@link JTextField} for {@link lcsb.mapviewer.model.map.Element#formula}
+	 * {@link JTextField} for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#formula}
 	 * parameter.
 	 */
 	private JTextField																	 formulaText;
 
 	/**
-	 * {@link JList} for {@link lcsb.mapviewer.model.map.Element#synonyms}
+	 * {@link JList} for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonyms}
 	 * parameter.
 	 */
 	private JList<String>																synonymsList;
 
 	/**
 	 * {@link JList} for
-	 * {@link lcsb.mapviewer.model.map.Element#formerSymbols} parameter.
+	 * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#formerSymbols} parameter.
 	 */
 	private JList<String>																formerSymbolsList;
 
 	/**
-	 * {@link JList} for {@link lcsb.mapviewer.model.map.Element#miriamData}
+	 * {@link JList} for {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#miriamData}
 	 * parameter.
 	 */
 	private JList<MiriamData>														miriamDataList;
 
 	/**
-	 * List of synonyms in {@link lcsb.mapviewer.model.map.Element#synonyms}.
+	 * List of synonyms in {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonyms}.
 	 * 
 	 * @see {@link #synonymsList}
 	 */
 	private DefaultListModel<String>										 synonymsListModel			= new DefaultListModel<>();
 
 	/**
-	 * List of synonyms in {@link lcsb.mapviewer.model.map.Element#formerSymbols}.
+	 * List of synonyms in {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#formerSymbols}.
 	 * 
 	 * @see {@link #formerSymbolsList}
 	 */
 	private DefaultListModel<String>										 formerSymbolsListModel = new DefaultListModel<>();
 
 	/**
-	 * List of synonyms in {@link lcsb.mapviewer.model.map.Element#miriamData}.
+	 * List of synonyms in {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#miriamData}.
 	 * 
 	 * @see {@link #miriamDataList}
 	 */
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/ColorModelCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/ColorModelCommand.java
index 8453b5d165..fe7b37500c 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/ColorModelCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/ColorModelCommand.java
@@ -11,6 +11,7 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.graphics.ArrowTypeData;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
@@ -26,7 +27,6 @@ import lcsb.mapviewer.model.map.reaction.AbstractNode;
 import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This {@link ModelCommand} colors a model (nodes and reactions) according to
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/SubModelCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/SubModelCommand.java
index 08a50071aa..a5026776c0 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/SubModelCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/SubModelCommand.java
@@ -7,7 +7,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementFormerSymbolsCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementFormerSymbolsCommand.java
index d9d57309a5..e1cf4f0d1a 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementFormerSymbolsCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementFormerSymbolsCommand.java
@@ -10,7 +10,7 @@ import org.apache.log4j.Logger;
 
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that changes
- * former sybmols of the {@link lcsb.mapviewer.model.map.Element Element} connected to
+ * former sybmols of the {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected to
  * {@link Alias}.
  * 
  * @author Piotr Gawron
@@ -32,7 +32,7 @@ public class AddElementFormerSymbolsCommand extends AddElementPropertyListEntryC
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param values
-	 *          new {@link lcsb.mapviewer.model.map.Element#synonym} values to be
+	 *          new {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} values to be
 	 *          added
 	 */
 	public AddElementFormerSymbolsCommand(Model model, Alias alias, List<String> values) {
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementMiriamDataCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementMiriamDataCommand.java
index 3e5b2440e9..2785204d23 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementMiriamDataCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementMiriamDataCommand.java
@@ -12,7 +12,7 @@ import org.apache.log4j.Logger;
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that changes
  * {@link MiriamData annotations} of the
- * {@link lcsb.mapviewer.model.map.Element Element} connected to {@link Alias}.
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected to {@link Alias}.
  * 
  * @author Piotr Gawron
  *
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementPropertyListEntryCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementPropertyListEntryCommand.java
index 2b52484c70..dd2f07fe56 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementPropertyListEntryCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementPropertyListEntryCommand.java
@@ -1,93 +1,93 @@
-package lcsb.mapviewer.commands.properties;
-
-import java.util.List;
-
-import lcsb.mapviewer.commands.CommandExecutionException;
-import lcsb.mapviewer.commands.ModelCommand;
-import lcsb.mapviewer.commands.ModelCommandStatus;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-
-/**
- * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that add entries
- * into a property of the {@link lcsb.mapviewer.model.map.Element Element} that
- * is list. {@link lcsb.mapviewer.model.map.Element Element} is connected to
- * {@link Alias}.
- * 
- * @param <T>
- *          class of property to edit
- * 
- * @author Piotr Gawron
- *
- */
-public abstract class AddElementPropertyListEntryCommand<T> extends ModelCommand {
-
-	/**
-	 * List of new values that should be added to property.
-	 */
-	private List<T> newValues;
-
-	/**
-	 * {@link Alias} for which we will change the property.
-	 */
-	private Alias	 alias;
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param model
-	 *          model to move
-	 * 
-	 * @param alias
-	 *          alias to be changed
-	 * 
-	 * @param newValues
-	 *          new values of the element property that will be added
-	 * 
-	 */
-	public AddElementPropertyListEntryCommand(Model model, Alias alias, List<T> newValues) {
-		super(model);
-		this.alias = alias;
-		this.newValues = newValues;
-	}
-
-	@Override
-	protected void redoImplementation() throws CommandExecutionException {
-		executeImplementation();
-		setStatus(ModelCommandStatus.EXECUTED);
-	}
-
-	/**
-	 * @return the alias
-	 * @see #alias
-	 */
-	protected Alias getAlias() {
-		return alias;
-	}
-
-	/**
-	 * @param alias
-	 *          the alias to set
-	 * @see #alias
-	 */
-	protected void setAlias(Alias alias) {
-		this.alias = alias;
-	}
-
-	/**
-	 * @return the newValue
-	 * @see #newValue
-	 */
-	protected List<T> getNewValues() {
-		return newValues;
-	}
-
-	/**
-	 * @param newValue
-	 *          the newValue to set
-	 * @see #newValue
-	 */
-	protected void setNewValues(List<T> newValue) {
-		this.newValues = newValue;
-	}
-}
+package lcsb.mapviewer.commands.properties;
+
+import java.util.List;
+
+import lcsb.mapviewer.commands.CommandExecutionException;
+import lcsb.mapviewer.commands.ModelCommand;
+import lcsb.mapviewer.commands.ModelCommandStatus;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+
+/**
+ * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that add entries
+ * into a property of the {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} that
+ * is list. {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} is connected to
+ * {@link Alias}.
+ * 
+ * @param <T>
+ *          class of property to edit
+ * 
+ * @author Piotr Gawron
+ *
+ */
+public abstract class AddElementPropertyListEntryCommand<T> extends ModelCommand {
+
+	/**
+	 * List of new values that should be added to property.
+	 */
+	private List<T> newValues;
+
+	/**
+	 * {@link Alias} for which we will change the property.
+	 */
+	private Alias	 alias;
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param model
+	 *          model to move
+	 * 
+	 * @param alias
+	 *          alias to be changed
+	 * 
+	 * @param newValues
+	 *          new values of the element property that will be added
+	 * 
+	 */
+	public AddElementPropertyListEntryCommand(Model model, Alias alias, List<T> newValues) {
+		super(model);
+		this.alias = alias;
+		this.newValues = newValues;
+	}
+
+	@Override
+	protected void redoImplementation() throws CommandExecutionException {
+		executeImplementation();
+		setStatus(ModelCommandStatus.EXECUTED);
+	}
+
+	/**
+	 * @return the alias
+	 * @see #alias
+	 */
+	protected Alias getAlias() {
+		return alias;
+	}
+
+	/**
+	 * @param alias
+	 *          the alias to set
+	 * @see #alias
+	 */
+	protected void setAlias(Alias alias) {
+		this.alias = alias;
+	}
+
+	/**
+	 * @return the newValue
+	 * @see #newValue
+	 */
+	protected List<T> getNewValues() {
+		return newValues;
+	}
+
+	/**
+	 * @param newValue
+	 *          the newValue to set
+	 * @see #newValue
+	 */
+	protected void setNewValues(List<T> newValue) {
+		this.newValues = newValue;
+	}
+}
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementSynonymsCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementSynonymsCommand.java
index 059e33828f..41a529447c 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementSynonymsCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/AddElementSynonymsCommand.java
@@ -10,7 +10,7 @@ import org.apache.log4j.Logger;
 
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that changes
- * synonyms of the {@link lcsb.mapviewer.model.map.Element Element} connected to
+ * synonyms of the {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected to
  * {@link Alias}.
  * 
  * @author Piotr Gawron
@@ -32,7 +32,7 @@ public class AddElementSynonymsCommand extends AddElementPropertyListEntryComman
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param values
-	 *          new {@link lcsb.mapviewer.model.map.Element#synonym} values to be
+	 *          new {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} values to be
 	 *          added
 	 */
 	public AddElementSynonymsCommand(Model model, Alias alias, List<String> values) {
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFormerSymbolCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFormerSymbolCommand.java
index 025c586f45..59c47fcbae 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFormerSymbolCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFormerSymbolCommand.java
@@ -8,7 +8,7 @@ import org.apache.log4j.Logger;
 
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that changes former
- * symbol of the {@link lcsb.mapviewer.model.map.Element Element} connected to
+ * symbol of the {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected to
  * {@link Alias}.
  * 
  * @author Piotr Gawron
@@ -30,9 +30,9 @@ public class ChangeElementFormerSymbolCommand extends ChangeElementPropertyListE
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param newValue
-	 *          new {@link lcsb.mapviewer.model.map.Element#synonym} value
+	 *          new {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} value
 	 * @param oldValue
-	 *          old {@link lcsb.mapviewer.model.map.Element#synonym} value
+	 *          old {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} value
 	 */
 	public ChangeElementFormerSymbolCommand(Model model, Alias alias, String newValue, String oldValue) {
 		super(model, alias, newValue, oldValue);
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFormulaCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFormulaCommand.java
index 56f6a1c96b..6f21ab50ac 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFormulaCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFormulaCommand.java
@@ -28,7 +28,7 @@ public class ChangeElementFormulaCommand extends ChangeElementPropertyCommand<St
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param newName
-	 *          new {@link lcsb.mapviewer.model.map.Element#formula} value
+	 *          new {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#formula} value
 	 */
 	public ChangeElementFormulaCommand(Model model, Alias alias, String newName) {
 		super(model, alias, newName);
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFullNameCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFullNameCommand.java
index 7efafa6b99..915eee3dda 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFullNameCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementFullNameCommand.java
@@ -28,7 +28,7 @@ public class ChangeElementFullNameCommand extends ChangeElementPropertyCommand<S
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param newName
-	 *          new {@link lcsb.mapviewer.model.map.Element#fullName} value
+	 *          new {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#fullName} value
 	 */
 	public ChangeElementFullNameCommand(Model model, Alias alias, String newName) {
 		super(model, alias, newName);
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementMiriamDataCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementMiriamDataCommand.java
index 26f59f8f10..dae2ea31ed 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementMiriamDataCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementMiriamDataCommand.java
@@ -9,7 +9,7 @@ import org.apache.log4j.Logger;
 
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that changes
- * annotations of the {@link lcsb.mapviewer.model.map.Element Element} connected
+ * annotations of the {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected
  * to {@link Alias}.
  * 
  * @author Piotr Gawron
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementNotesCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementNotesCommand.java
index 0c1a544e0b..ecbf0aeadf 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementNotesCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementNotesCommand.java
@@ -28,7 +28,7 @@ public class ChangeElementNotesCommand extends ChangeElementPropertyCommand<Stri
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param newName
-	 *          new {@link lcsb.mapviewer.model.map.Element#notes} value
+	 *          new {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#notes} value
 	 */
 	public ChangeElementNotesCommand(Model model, Alias alias, String newName) {
 		super(model, alias, newName);
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementPropertyListEntryCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementPropertyListEntryCommand.java
index b83fa614b8..49fd7ec140 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementPropertyListEntryCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementPropertyListEntryCommand.java
@@ -1,128 +1,128 @@
-package lcsb.mapviewer.commands.properties;
-
-import lcsb.mapviewer.commands.CommandExecutionException;
-import lcsb.mapviewer.commands.ModelCommand;
-import lcsb.mapviewer.commands.ModelCommandStatus;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-
-/**
- * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that changes single
- * entry in a property of the {@link lcsb.mapviewer.model.map.Element Element}
- * that is list. {@link lcsb.mapviewer.model.map.Element Element} is connected
- * to {@link Alias}.
- * 
- * @param <T>
- *          class of property to edit
- * 
- * @author Piotr Gawron
- *
- */
-public abstract class ChangeElementPropertyListEntryCommand<T> extends ModelCommand {
-
-	/**
-	 * New element property value.
-	 */
-	private T		 newValue;
-
-	/**
-	 * Old element property value.
-	 */
-	private T		 oldValue;
-
-	/**
-	 * {@link Alias} for which we will change the property.
-	 */
-	private Alias alias;
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param model
-	 *          model to move
-	 * 
-	 * @param alias
-	 *          alias to be changed
-	 * 
-	 * @param newValue
-	 *          new value of the element property
-	 * 
-	 * @param oldValue
-	 *          old value of the element property
-	 */
-	public ChangeElementPropertyListEntryCommand(Model model, Alias alias, T newValue, T oldValue) {
-		super(model);
-		this.alias = alias;
-		this.oldValue = oldValue;
-		this.newValue = newValue;
-	}
-
-	@Override
-	protected void undoImplementation() throws CommandExecutionException {
-		T tmpNewValue = newValue;
-		T tmpOldValue = oldValue;
-		newValue = tmpOldValue;
-		oldValue = tmpNewValue;
-		executeImplementation();
-		newValue = tmpNewValue;
-		oldValue = tmpOldValue;
-		setStatus(ModelCommandStatus.UNDONE);
-	}
-
-	@Override
-	protected void redoImplementation() throws CommandExecutionException {
-		executeImplementation();
-		setStatus(ModelCommandStatus.EXECUTED);
-	}
-
-	/**
-	 * @return the alias
-	 * @see #alias
-	 */
-	protected Alias getAlias() {
-		return alias;
-	}
-
-	/**
-	 * @param alias
-	 *          the alias to set
-	 * @see #alias
-	 */
-	protected void setAlias(Alias alias) {
-		this.alias = alias;
-	}
-
-	/**
-	 * @return the oldValue
-	 * @see #oldValue
-	 */
-	protected T getOldValue() {
-		return oldValue;
-	}
-
-	/**
-	 * @param oldValue
-	 *          the oldValue to set
-	 * @see #oldValue
-	 */
-	protected void setOldValue(T oldValue) {
-		this.oldValue = oldValue;
-	}
-
-	/**
-	 * @return the newValue
-	 * @see #newValue
-	 */
-	protected T getNewValue() {
-		return newValue;
-	}
-
-	/**
-	 * @param newValue
-	 *          the newValue to set
-	 * @see #newValue
-	 */
-	protected void setNewValue(T newValue) {
-		this.newValue = newValue;
-	}
-}
+package lcsb.mapviewer.commands.properties;
+
+import lcsb.mapviewer.commands.CommandExecutionException;
+import lcsb.mapviewer.commands.ModelCommand;
+import lcsb.mapviewer.commands.ModelCommandStatus;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+
+/**
+ * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that changes single
+ * entry in a property of the {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element}
+ * that is list. {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} is connected
+ * to {@link Alias}.
+ * 
+ * @param <T>
+ *          class of property to edit
+ * 
+ * @author Piotr Gawron
+ *
+ */
+public abstract class ChangeElementPropertyListEntryCommand<T> extends ModelCommand {
+
+	/**
+	 * New element property value.
+	 */
+	private T		 newValue;
+
+	/**
+	 * Old element property value.
+	 */
+	private T		 oldValue;
+
+	/**
+	 * {@link Alias} for which we will change the property.
+	 */
+	private Alias alias;
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param model
+	 *          model to move
+	 * 
+	 * @param alias
+	 *          alias to be changed
+	 * 
+	 * @param newValue
+	 *          new value of the element property
+	 * 
+	 * @param oldValue
+	 *          old value of the element property
+	 */
+	public ChangeElementPropertyListEntryCommand(Model model, Alias alias, T newValue, T oldValue) {
+		super(model);
+		this.alias = alias;
+		this.oldValue = oldValue;
+		this.newValue = newValue;
+	}
+
+	@Override
+	protected void undoImplementation() throws CommandExecutionException {
+		T tmpNewValue = newValue;
+		T tmpOldValue = oldValue;
+		newValue = tmpOldValue;
+		oldValue = tmpNewValue;
+		executeImplementation();
+		newValue = tmpNewValue;
+		oldValue = tmpOldValue;
+		setStatus(ModelCommandStatus.UNDONE);
+	}
+
+	@Override
+	protected void redoImplementation() throws CommandExecutionException {
+		executeImplementation();
+		setStatus(ModelCommandStatus.EXECUTED);
+	}
+
+	/**
+	 * @return the alias
+	 * @see #alias
+	 */
+	protected Alias getAlias() {
+		return alias;
+	}
+
+	/**
+	 * @param alias
+	 *          the alias to set
+	 * @see #alias
+	 */
+	protected void setAlias(Alias alias) {
+		this.alias = alias;
+	}
+
+	/**
+	 * @return the oldValue
+	 * @see #oldValue
+	 */
+	protected T getOldValue() {
+		return oldValue;
+	}
+
+	/**
+	 * @param oldValue
+	 *          the oldValue to set
+	 * @see #oldValue
+	 */
+	protected void setOldValue(T oldValue) {
+		this.oldValue = oldValue;
+	}
+
+	/**
+	 * @return the newValue
+	 * @see #newValue
+	 */
+	protected T getNewValue() {
+		return newValue;
+	}
+
+	/**
+	 * @param newValue
+	 *          the newValue to set
+	 * @see #newValue
+	 */
+	protected void setNewValue(T newValue) {
+		this.newValue = newValue;
+	}
+}
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementSymbolCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementSymbolCommand.java
index c54fd8d29f..1958015498 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementSymbolCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementSymbolCommand.java
@@ -28,7 +28,7 @@ public class ChangeElementSymbolCommand extends ChangeElementPropertyCommand<Str
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param newName
-	 *          new {@link lcsb.mapviewer.model.map.Element#symbol} value
+	 *          new {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#symbol} value
 	 */
 	public ChangeElementSymbolCommand(Model model, Alias alias, String newName) {
 		super(model, alias, newName);
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementSynonymCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementSynonymCommand.java
index 051f192af3..d9764839b3 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementSynonymCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/ChangeElementSynonymCommand.java
@@ -8,7 +8,7 @@ import org.apache.log4j.Logger;
 
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that changes
- * synonym of the {@link lcsb.mapviewer.model.map.Element Element} connected to
+ * synonym of the {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected to
  * {@link Alias}.
  * 
  * @author Piotr Gawron
@@ -30,9 +30,9 @@ public class ChangeElementSynonymCommand extends ChangeElementPropertyListEntryC
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param newValue
-	 *          new {@link lcsb.mapviewer.model.map.Element#synonym} value
+	 *          new {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} value
 	 * @param oldValue
-	 *          old {@link lcsb.mapviewer.model.map.Element#synonym} value
+	 *          old {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} value
 	 */
 	public ChangeElementSynonymCommand(Model model, Alias alias, String newValue, String oldValue) {
 		super(model, alias, newValue, oldValue);
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementFormerSymbolsCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementFormerSymbolsCommand.java
index 2bc7e0d99a..1fdc63b9d1 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementFormerSymbolsCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementFormerSymbolsCommand.java
@@ -10,7 +10,7 @@ import lcsb.mapviewer.model.map.model.Model;
 
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that removes former
- * symbols from {@link lcsb.mapviewer.model.map.Element Element} connected to
+ * symbols from {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected to
  * {@link Alias}.
  * 
  * @author Piotr Gawron
@@ -32,7 +32,7 @@ public class RemoveElementFormerSymbolsCommand extends RemoveElementPropertyList
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param values
-	 *          {@link lcsb.mapviewer.model.map.Element#synonym} values to be
+	 *          {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} values to be
 	 *          removed
 	 */
 	public RemoveElementFormerSymbolsCommand(Model model, Alias alias, List<String> values) {
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementMiriamDataCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementMiriamDataCommand.java
index 619d01b113..b8264c8984 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementMiriamDataCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementMiriamDataCommand.java
@@ -11,7 +11,7 @@ import org.apache.log4j.Logger;
 
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that removes
- * annotations from {@link lcsb.mapviewer.model.map.Element Element} connected
+ * annotations from {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected
  * to {@link Alias}.
  * 
  * @author Piotr Gawron
@@ -33,7 +33,7 @@ public class RemoveElementMiriamDataCommand extends RemoveElementPropertyListEnt
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param values
-	 *          {@link lcsb.mapviewer.model.map.Element#synonym} values to be
+	 *          {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} values to be
 	 *          removed
 	 */
 	public RemoveElementMiriamDataCommand(Model model, Alias alias, List<MiriamData> values) {
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementPropertyListEntryCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementPropertyListEntryCommand.java
index 49c57fcf6e..285c3bb702 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementPropertyListEntryCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementPropertyListEntryCommand.java
@@ -1,93 +1,93 @@
-package lcsb.mapviewer.commands.properties;
-
-import java.util.List;
-
-import lcsb.mapviewer.commands.CommandExecutionException;
-import lcsb.mapviewer.commands.ModelCommand;
-import lcsb.mapviewer.commands.ModelCommandStatus;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-
-/**
- * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that removes
- * entries from a property of the {@link lcsb.mapviewer.model.map.Element
- * Element} that is list. {@link lcsb.mapviewer.model.map.Element Element} is
- * connected to {@link Alias}.
- * 
- * @param <T>
- *          class of property to edit
- * 
- * @author Piotr Gawron
- *
- */
-public abstract class RemoveElementPropertyListEntryCommand<T> extends ModelCommand {
-
-	/**
-	 * Rlement property values to be removed.
-	 */
-	private List<T> values;
-
-	/**
-	 * {@link Alias} for which we will change the property.
-	 */
-	private Alias	 alias;
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param model
-	 *          model to move
-	 * 
-	 * @param alias
-	 *          alias to be changed
-	 * 
-	 * @param values
-	 *          values of the element property to remove
-	 */
-	public RemoveElementPropertyListEntryCommand(Model model, Alias alias, List<T> values) {
-		super(model);
-		this.alias = alias;
-		this.values = values;
-	}
-
-	@Override
-	protected void redoImplementation() throws CommandExecutionException {
-		executeImplementation();
-		setStatus(ModelCommandStatus.EXECUTED);
-	}
-
-	/**
-	 * @return the alias
-	 * @see #alias
-	 */
-	protected Alias getAlias() {
-		return alias;
-	}
-
-	/**
-	 * @param alias
-	 *          the alias to set
-	 * @see #alias
-	 */
-	protected void setAlias(Alias alias) {
-		this.alias = alias;
-	}
-
-	/**
-	 * @return the values
-	 * @see #values
-	 */
-	public List<T> getValues() {
-		return values;
-	}
-
-	/**
-	 * @param values
-	 *          the values to set
-	 * @see #values
-	 */
-	public void setValues(List<T> values) {
-		this.values = values;
-	}
-
-}
+package lcsb.mapviewer.commands.properties;
+
+import java.util.List;
+
+import lcsb.mapviewer.commands.CommandExecutionException;
+import lcsb.mapviewer.commands.ModelCommand;
+import lcsb.mapviewer.commands.ModelCommandStatus;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+
+/**
+ * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that removes
+ * entries from a property of the {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element
+ * Element} that is list. {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} is
+ * connected to {@link Alias}.
+ * 
+ * @param <T>
+ *          class of property to edit
+ * 
+ * @author Piotr Gawron
+ *
+ */
+public abstract class RemoveElementPropertyListEntryCommand<T> extends ModelCommand {
+
+	/**
+	 * Rlement property values to be removed.
+	 */
+	private List<T> values;
+
+	/**
+	 * {@link Alias} for which we will change the property.
+	 */
+	private Alias	 alias;
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param model
+	 *          model to move
+	 * 
+	 * @param alias
+	 *          alias to be changed
+	 * 
+	 * @param values
+	 *          values of the element property to remove
+	 */
+	public RemoveElementPropertyListEntryCommand(Model model, Alias alias, List<T> values) {
+		super(model);
+		this.alias = alias;
+		this.values = values;
+	}
+
+	@Override
+	protected void redoImplementation() throws CommandExecutionException {
+		executeImplementation();
+		setStatus(ModelCommandStatus.EXECUTED);
+	}
+
+	/**
+	 * @return the alias
+	 * @see #alias
+	 */
+	protected Alias getAlias() {
+		return alias;
+	}
+
+	/**
+	 * @param alias
+	 *          the alias to set
+	 * @see #alias
+	 */
+	protected void setAlias(Alias alias) {
+		this.alias = alias;
+	}
+
+	/**
+	 * @return the values
+	 * @see #values
+	 */
+	public List<T> getValues() {
+		return values;
+	}
+
+	/**
+	 * @param values
+	 *          the values to set
+	 * @see #values
+	 */
+	public void setValues(List<T> values) {
+		this.values = values;
+	}
+
+}
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementSynonymsCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementSynonymsCommand.java
index f54b5bf560..31715dfab3 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementSynonymsCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/properties/RemoveElementSynonymsCommand.java
@@ -10,7 +10,7 @@ import org.apache.log4j.Logger;
 
 /**
  * {@link lcsb.mapviewer.commands.ModelCommand ModelCommand} that removes
- * synonym from {@link lcsb.mapviewer.model.map.Element Element} connected to
+ * synonym from {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element Element} connected to
  * {@link Alias}.
  * 
  * @author Piotr Gawron
@@ -32,7 +32,7 @@ public class RemoveElementSynonymsCommand extends RemoveElementPropertyListEntry
 	 * @param alias
 	 *          {@link ChangeElementPropertyCommand#alias}
 	 * @param values
-	 *          {@link lcsb.mapviewer.model.map.Element#synonym} values to be
+	 *          {@link lcsb.mapviewer.converter.model.celldesigner.structure.Element#synonym} values to be
 	 *          removed
 	 */
 	public RemoveElementSynonymsCommand(Model model, Alias alias, List<String> values) {
diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java b/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java
index 99607c7696..ffd2b86d58 100644
--- a/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java
+++ b/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java
@@ -16,6 +16,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.Pair;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.layout.GenericColorSchema;
@@ -27,7 +28,6 @@ import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
 import lcsb.mapviewer.model.map.model.SubmodelType;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ColorModelCommandTest extends CommandTestFunctions {
 	Logger logger = Logger.getLogger(ColorModelCommandTest.class);
diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/CommandTestFunctions.java b/model-command/src/test/java/lcsb/mapviewer/commands/CommandTestFunctions.java
index 7ba119a656..e99ef7701b 100644
--- a/model-command/src/test/java/lcsb/mapviewer/commands/CommandTestFunctions.java
+++ b/model-command/src/test/java/lcsb/mapviewer/commands/CommandTestFunctions.java
@@ -9,13 +9,13 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.map.agregator.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public abstract class CommandTestFunctions {
 	public double											EPSILON	= 1e-6;
diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/CopyCommandTest.java b/model-command/src/test/java/lcsb/mapviewer/commands/CopyCommandTest.java
index d9eb113cfd..1463362ed6 100644
--- a/model-command/src/test/java/lcsb/mapviewer/commands/CopyCommandTest.java
+++ b/model-command/src/test/java/lcsb/mapviewer/commands/CopyCommandTest.java
@@ -14,9 +14,12 @@ import org.junit.Test;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.OverviewImage;
 import lcsb.mapviewer.model.map.OverviewModelLink;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
@@ -29,9 +32,6 @@ import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
 import lcsb.mapviewer.model.map.model.SubmodelType;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
 
 public class CopyCommandTest extends CommandTestFunctions {
 
diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/MoveElementsCommandTest.java b/model-command/src/test/java/lcsb/mapviewer/commands/MoveElementsCommandTest.java
index d239dfe232..72ba4c56ef 100644
--- a/model-command/src/test/java/lcsb/mapviewer/commands/MoveElementsCommandTest.java
+++ b/model-command/src/test/java/lcsb/mapviewer/commands/MoveElementsCommandTest.java
@@ -12,11 +12,11 @@ import java.util.List;
 
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelComparator;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/MiriamData.java b/model/src/main/java/lcsb/mapviewer/model/map/MiriamData.java
index ca9957f456..df0c5393d3 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/MiriamData.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/MiriamData.java
@@ -6,11 +6,9 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 import javax.xml.bind.annotation.XmlRootElement;
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/MiriamType.java b/model/src/main/java/lcsb/mapviewer/model/map/MiriamType.java
index fc08ab7123..875ba57f53 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/MiriamType.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/MiriamType.java
@@ -4,7 +4,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.ChemicalAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
@@ -14,13 +13,6 @@ import lcsb.mapviewer.model.map.layout.alias.PhenotypeAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Chemical;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
 
 /**
  * Type of known miriam annotation.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/agregator/package-info.java b/model/src/main/java/lcsb/mapviewer/model/map/agregator/package-info.java
deleted file mode 100644
index 168d49a4f5..0000000000
--- a/model/src/main/java/lcsb/mapviewer/model/map/agregator/package-info.java
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * Contains structures used for compartment modeling.
- */
-package lcsb.mapviewer.model.map.agregator;
-
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/graph/DataMining.java b/model/src/main/java/lcsb/mapviewer/model/map/graph/DataMining.java
index 360c1f1757..bbeaa6515f 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/graph/DataMining.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/graph/DataMining.java
@@ -1,212 +1,212 @@
-package lcsb.mapviewer.model.map.graph;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
-
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.MiriamData;
-
-import org.hibernate.annotations.Cascade;
-import org.hibernate.annotations.CascadeType;
-import org.hibernate.annotations.IndexColumn;
-
-/**
- * Entity representing data mining entry.
- * 
- * @author Piotr Gawron
- * 
- */
-@Entity
-public class DataMining implements Serializable {
-
-	/**
-	 * 
-	 */
-	private static final long	serialVersionUID			= 1L;
-
-	/**
-	 * Unique database identifier.
-	 */
-	@Id
-	@GeneratedValue(strategy = GenerationType.IDENTITY)
-	@Column(name = "idDb", unique = true, nullable = false)
-	private Integer						id;
-
-	/**
-	 * For which element this entry was created.
-	 */
-	@ManyToOne(optional = false)
-	private Element						element;
-
-	/**
-	 * List of the suggested connection.
-	 */
-	@Cascade({ CascadeType.ALL })
-	@OneToMany(fetch = FetchType.EAGER)
-	@IndexColumn(name = "idx")
-	@JoinTable(name = "datamining_suggested_connections")
-	private List<MiriamData>	suggestedConnections	= new ArrayList<MiriamData>();
-
-	/**
-	 * Short description of the connection.
-	 */
-	@Column(columnDefinition = "TEXT")
-	private String						description;
-
-	/**
-	 * Where the data comes from.
-	 */
-	private DataMiningType		type;
-
-	/**
-	 * List of reference links for this entry.
-	 */
-	@Cascade({ CascadeType.ALL })
-	@OneToMany(fetch = FetchType.EAGER)
-	@IndexColumn(name = "idx")
-	private List<MiriamData>	references						= new ArrayList<MiriamData>();
-
-	/**
-	 * Adds reference.
-	 * 
-	 * @param md
-	 *          new reference link
-	 * @see #references
-	 */
-	public void addReference(MiriamData md) {
-		references.add(md);
-	}
-
-	/**
-	 * @return the references
-	 * @see #references
-	 */
-	public List<MiriamData> getReferences() {
-		return references;
-	}
-
-	/**
-	 * @param references
-	 *          the references to set
-	 * @see #references
-	 */
-	public void setReferences(List<MiriamData> references) {
-		this.references = references;
-	}
-
-	/**
-	 * @return the type
-	 * @see #type
-	 */
-	public DataMiningType getType() {
-		return type;
-	}
-
-	/**
-	 * @param type
-	 *          the type to set
-	 * @see #type
-	 */
-	public void setType(DataMiningType type) {
-		this.type = type;
-	}
-
-	/**
-	 * @return the description
-	 * @see #description
-	 */
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * @param description
-	 *          the description to set
-	 * @see #description
-	 */
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	/**
-	 * @return the id
-	 * @see #id
-	 */
-	public Integer getId() {
-		return id;
-	}
-
-	/**
-	 * @param id
-	 *          the id to set
-	 * @see #id
-	 */
-	public void setId(Integer id) {
-		this.id = id;
-	}
-
-	/**
-	 * @return the element
-	 * @see #element
-	 */
-	public Element getElement() {
-		return element;
-	}
-
-	/**
-	 * @param element
-	 *          the element to set
-	 * @see #element
-	 */
-	public void setElement(Element element) {
-		this.element = element;
-	}
-
-	/**
-	 * @return the suggestedConnections
-	 * @see #suggestedConnections
-	 */
-	public List<MiriamData> getSuggestedConnections() {
-		return suggestedConnections;
-	}
-
-	/**
-	 * @param suggestedConnections
-	 *          the suggestedConnections to set
-	 * @see #suggestedConnections
-	 */
-	public void setSuggestedConnections(List<MiriamData> suggestedConnections) {
-		this.suggestedConnections = suggestedConnections;
-	}
-
-	/**
-	 * @param suggestedConnection
-	 *          the suggestedConnection to add
-	 * @see #suggestedConnections
-	 */
-	public void addSuggestedConnection(MiriamData suggestedConnection) {
-		this.suggestedConnections.add(suggestedConnection);
-	}
-
-	/**
-	 * Adds references to {@link #references}.
-	 * 
-	 * @param ref
-	 *          references to add
-	 */
-	public void addReferences(List<MiriamData> ref) {
-		references.addAll(ref);
-	}
-
-}
+package lcsb.mapviewer.model.map.graph;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+
+import org.hibernate.annotations.Cascade;
+import org.hibernate.annotations.CascadeType;
+import org.hibernate.annotations.IndexColumn;
+
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+
+/**
+ * Entity representing data mining entry.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+public class DataMining implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID			= 1L;
+
+	/**
+	 * Unique database identifier.
+	 */
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "idDb", unique = true, nullable = false)
+	private Integer						id;
+
+	/**
+	 * For which element this entry was created.
+	 */
+	@ManyToOne(optional = false)
+	private Alias						element;
+
+	/**
+	 * List of the suggested connection.
+	 */
+	@Cascade({ CascadeType.ALL })
+	@OneToMany(fetch = FetchType.EAGER)
+	@IndexColumn(name = "idx")
+	@JoinTable(name = "datamining_suggested_connections")
+	private List<MiriamData>	suggestedConnections	= new ArrayList<MiriamData>();
+
+	/**
+	 * Short description of the connection.
+	 */
+	@Column(columnDefinition = "TEXT")
+	private String						description;
+
+	/**
+	 * Where the data comes from.
+	 */
+	private DataMiningType		type;
+
+	/**
+	 * List of reference links for this entry.
+	 */
+	@Cascade({ CascadeType.ALL })
+	@OneToMany(fetch = FetchType.EAGER)
+	@IndexColumn(name = "idx")
+	private List<MiriamData>	references						= new ArrayList<MiriamData>();
+
+	/**
+	 * Adds reference.
+	 * 
+	 * @param md
+	 *          new reference link
+	 * @see #references
+	 */
+	public void addReference(MiriamData md) {
+		references.add(md);
+	}
+
+	/**
+	 * @return the references
+	 * @see #references
+	 */
+	public List<MiriamData> getReferences() {
+		return references;
+	}
+
+	/**
+	 * @param references
+	 *          the references to set
+	 * @see #references
+	 */
+	public void setReferences(List<MiriamData> references) {
+		this.references = references;
+	}
+
+	/**
+	 * @return the type
+	 * @see #type
+	 */
+	public DataMiningType getType() {
+		return type;
+	}
+
+	/**
+	 * @param type
+	 *          the type to set
+	 * @see #type
+	 */
+	public void setType(DataMiningType type) {
+		this.type = type;
+	}
+
+	/**
+	 * @return the description
+	 * @see #description
+	 */
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * @param description
+	 *          the description to set
+	 * @see #description
+	 */
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	/**
+	 * @return the id
+	 * @see #id
+	 */
+	public Integer getId() {
+		return id;
+	}
+
+	/**
+	 * @param id
+	 *          the id to set
+	 * @see #id
+	 */
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	/**
+	 * @return the element
+	 * @see #element
+	 */
+	public Alias getElement() {
+		return element;
+	}
+
+	/**
+	 * @param element
+	 *          the element to set
+	 * @see #element
+	 */
+	public void setElement(Alias element) {
+		this.element = element;
+	}
+
+	/**
+	 * @return the suggestedConnections
+	 * @see #suggestedConnections
+	 */
+	public List<MiriamData> getSuggestedConnections() {
+		return suggestedConnections;
+	}
+
+	/**
+	 * @param suggestedConnections
+	 *          the suggestedConnections to set
+	 * @see #suggestedConnections
+	 */
+	public void setSuggestedConnections(List<MiriamData> suggestedConnections) {
+		this.suggestedConnections = suggestedConnections;
+	}
+
+	/**
+	 * @param suggestedConnection
+	 *          the suggestedConnection to add
+	 * @see #suggestedConnections
+	 */
+	public void addSuggestedConnection(MiriamData suggestedConnection) {
+		this.suggestedConnections.add(suggestedConnection);
+	}
+
+	/**
+	 * Adds references to {@link #references}.
+	 * 
+	 * @param ref
+	 *          references to add
+	 */
+	public void addReferences(List<MiriamData> ref) {
+		references.addAll(ref);
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/ColorSchema.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/ColorSchema.java
index bbdb86ebfe..0493975e9a 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/ColorSchema.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/ColorSchema.java
@@ -1,543 +1,543 @@
-package lcsb.mapviewer.model.map.layout;
-
-import java.awt.Color;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import lcsb.mapviewer.common.Pair;
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.Species;
-
-/**
- * Entry of coloring schema used for changing colors in the map. It allows to
- * identify some elements by use of the filters (by name, type, etcs.) and
- * contains information about the color that should be assigned to the fileter
- * elements.
- * 
- * @author Piotr Gawron
- * 
- */
-public abstract class ColorSchema implements Serializable {
-
-	/**
-	 * 
-	 */
-	private static final long							 serialVersionUID											= 1L;
-
-	/**
-	 * Base of the hex representation.
-	 */
-	private static final int							 HEX_BASE															= 16;
-
-	/**
-	 * Length of the string describing color in rgb: "#RRGGBB".
-	 */
-	private static final int							 COLOR_STRING_LENGTH									= 7;
-
-	/**
-	 * Where starts description of red color in stirng representing color.
-	 */
-	private static final int							 COLOR_SUBSTRING_START_RED						= 1;
-
-	/**
-	 * Where starts description of green color in stirng representing color.
-	 */
-	private static final int							 COLOR_SUBSTRING_START_GREEN					= 3;
-
-	/**
-	 * Where starts description of blue color in stirng representing color.
-	 */
-	private static final int							 COLOR_SUBSTRING_START_BLUE						= 5;
-
-	/**
-	 * Defines the maximum value of primary colors in RGB model (every color is
-	 * from range 0..255).
-	 */
-	private static final int							 MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT	= 255;
-
-	/**
-	 * Name of the {@link lcsb.mapviewer.db.model.map.Element Element}. If null
-	 * then this field will be skiped.
-	 */
-	private String												 name																	= null;
-
-	/**
-	 * Identifier of the reaction to change the color.
-	 */
-	private String												 reactionIdentifier										= null;
-
-	/**
-	 * Should the direction of highlighted reaction be reversed.
-	 */
-	private Boolean												 reverseReaction											= null;
-
-	/**
-	 * Width of the line in the reaction.
-	 */
-	private Double												 lineWidth														= null;
-
-	/**
-	 * In which compartments (identified by name) the element can occur.
-	 */
-	private List<String>									 compartments													= new ArrayList<String>();
-
-	/**
-	 * What types of element should be identified by this entry.
-	 */
-	private List<Class<? extends Species>> types																= new ArrayList<Class<? extends Species>>();
-
-	/**
-	 * Value (-1..1 range) that is assigned to filtered elements (it will be
-	 * transformed into color later on). Only one of the {@link #value} and
-	 * {@link #color} can be set.
-	 */
-	private Double												 value																= null;
-
-	/**
-	 * Color that is assigned to filtered elements. Only one of the {@link #value}
-	 * and {@link #color} can be set.
-	 */
-	private Color													 color																= null;
-
-	/**
-	 * General identifier that identifies the element.
-	 */
-	private String												 generalIdentifier										= null;
-
-	/**
-	 * List of specific identifiers that filter the elements.
-	 */
-	private List<Pair<MiriamType, String>> identifierColumns										= new ArrayList<Pair<MiriamType, String>>();
-
-	/**
-	 * Number of elements matched by this entry.
-	 */
-	private int														 matches															= 0;
-
-	/**
-	 * Short description of the entry.
-	 */
-	private String												 description;
-
-	/**
-	 * Default constructor.
-	 */
-	protected ColorSchema() {
-	}
-
-	/**
-	 * Initializes object by copying data from the parameter.
-	 * 
-	 * @param original
-	 *          original object used for initialization
-	 */
-	protected ColorSchema(ColorSchema original) {
-		this.setName(original.getName());
-		this.setReactionIdentifier(original.getReactionIdentifier());
-		this.setReverseReaction(original.getReverseReaction());
-		this.setLineWidth(original.getLineWidth());
-		this.addCompartments(original.getCompartments());
-		this.addTypes(original.getTypes());
-		this.setValue(original.getValue());
-		this.setColor(original.getColor());
-		this.setGeneralIdentifier(original.getGeneralIdentifier());
-		this.addIdentifierColumns(original.getIdentifierColumns());
-		this.setMatches(original.getMatches());
-		this.setDescription(original.getDescription());
-	}
-
-	/**
-	 * Adds identifiers to {@link #identifierColumns} list.
-	 * 
-	 * @param identifierColumnsList
-	 *          list of pairs defining type of identifier and the identifier value
-	 */
-	public void addIdentifierColumns(List<Pair<MiriamType, String>> identifierColumnsList) {
-		for (Pair<MiriamType, String> pair : identifierColumnsList) {
-			addIdentifierColumn(pair);
-		}
-
-	}
-
-	/**
-	 * Adds class types to {@link #types} list.
-	 * 
-	 * @param types2
-	 *          list of classes to add
-	 */
-	public void addTypes(List<Class<? extends Species>> types2) {
-		for (Class<? extends Species> clazz : types2) {
-			addType(clazz);
-		}
-	}
-
-	/**
-	 * Adds compartment names to {@link #compartments} list.
-	 * 
-	 * @param compartments2
-	 *          elements to add
-	 */
-	public void addCompartments(String[] compartments2) {
-		for (String string : compartments2) {
-			compartments.add(string);
-		}
-	}
-
-	/**
-	 * Adds compartment names to {@link #compartments} list.
-	 * 
-	 * @param compartments2
-	 *          elements to add
-	 */
-	public void addCompartments(Collection<String> compartments2) {
-		for (String string : compartments2) {
-			compartments.add(string);
-		}
-	}
-
-	/**
-	 * Sets {@link #color} from the string.
-	 * 
-	 * @param string
-	 *          color in text representation
-	 * @throws InvalidColorSchemaException
-	 *           thrown when string describing color is invalid
-	 */
-	public void setColor(String string) throws InvalidColorSchemaException {
-		if (string.length() != COLOR_STRING_LENGTH) {
-			throw new InvalidColorSchemaException("Invalid color value: " + string + ". Correct format: #xxxxxx (where x is a hex value)");
-		}
-		if (string.charAt(0) != '#') {
-			throw new InvalidColorSchemaException("Invalid color value: " + string + ". Correct format: #xxxxxx (where x is a hex value)");
-
-		} else {
-			setColor(new Color(Integer.valueOf(string.substring(COLOR_SUBSTRING_START_RED, COLOR_SUBSTRING_START_GREEN), HEX_BASE), //
-					Integer.valueOf(string.substring(COLOR_SUBSTRING_START_GREEN, COLOR_SUBSTRING_START_BLUE), HEX_BASE), //
-					Integer.valueOf(string.substring(COLOR_SUBSTRING_START_BLUE, COLOR_STRING_LENGTH), HEX_BASE)));
-		}
-
-	}
-
-	@Override
-	public String toString() {
-		StringBuilder result = new StringBuilder();
-		result.append("[");
-		if (name != null) {
-			result.append(name + ",");
-		}
-		if (compartments.size() > 0) {
-			result.append("(");
-			for (String comp : compartments) {
-				result.append(comp + ",");
-			}
-			result.append("),");
-		}
-		if (types.size() > 0) {
-			result.append("(");
-			for (Class<?> clazz : types) {
-				result.append(clazz.getSimpleName() + ",");
-			}
-			result.append("),");
-		}
-		if (value != null) {
-			result.append(value + ",");
-		}
-		if (color != null) {
-			result.append(color + ",");
-		}
-		if (generalIdentifier != null) {
-			result.append(generalIdentifier + ",");
-		}
-		if (types.size() > 0) {
-			result.append("(");
-			for (Pair<MiriamType, String> pair : identifierColumns) {
-				result.append(pair.getLeft() + "-" + pair.getRight() + ",");
-			}
-			result.append("),");
-		}
-		result.append(matches + "]");
-		return result.toString();
-	}
-
-	/**
-	 * @return the name
-	 * @see #name
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * @param name
-	 *          the name to set
-	 * @see #name
-	 */
-	public void setName(String name) {
-		if (name == null) {
-			this.name = null;
-		} else {
-			this.name = name.trim();
-		}
-	}
-
-	/**
-	 * @return the compartments
-	 * @see #compartments
-	 */
-	public List<String> getCompartments() {
-		return compartments;
-	}
-
-	/**
-	 * @param compartments
-	 *          the compartments to set
-	 * @see #compartments
-	 */
-	public void setCompartments(List<String> compartments) {
-		this.compartments = compartments;
-	}
-
-	/**
-	 * @return the types
-	 * @see #types
-	 */
-	public List<Class<? extends Species>> getTypes() {
-		return types;
-	}
-
-	/**
-	 * @param types
-	 *          the types to set
-	 * @see #types
-	 */
-	public void setTypes(List<Class<? extends Species>> types) {
-		this.types = types;
-	}
-
-	/**
-	 * @return the value
-	 * @see #value
-	 */
-	public Double getValue() {
-		return value;
-	}
-
-	/**
-	 * @param value
-	 *          the value to set
-	 * @see #value
-	 */
-	public void setValue(Double value) {
-		this.value = value;
-	}
-
-	/**
-	 * @return the color
-	 * @see #color
-	 */
-	public Color getColor() {
-		return color;
-	}
-
-	/**
-	 * @param color
-	 *          the color to set
-	 * @see #color
-	 */
-	public void setColor(Color color) {
-		this.color = color;
-	}
-
-	/**
-	 * @return the generalIdentifier
-	 * @see #generalIdentifier
-	 */
-	public String getGeneralIdentifier() {
-		return generalIdentifier;
-	}
-
-	/**
-	 * @param generalIdentifier
-	 *          the generalIdentifier to set
-	 * @see #generalIdentifier
-	 */
-	public void setGeneralIdentifier(String generalIdentifier) {
-		this.generalIdentifier = generalIdentifier;
-	}
-
-	/**
-	 * @return the identifierColumns
-	 * @see #identifierColumns
-	 */
-	public List<Pair<MiriamType, String>> getIdentifierColumns() {
-		return identifierColumns;
-	}
-
-	/**
-	 * @param identifierColumns
-	 *          the identifierColumns to set
-	 * @see #identifierColumns
-	 */
-	public void setIdentifierColumns(List<Pair<MiriamType, String>> identifierColumns) {
-		this.identifierColumns = identifierColumns;
-	}
-
-	/**
-	 * @return the matches
-	 * @see #matches
-	 */
-	public int getMatches() {
-		return matches;
-	}
-
-	/**
-	 * @param matches
-	 *          the matches to set
-	 * @see #matches
-	 */
-	public void setMatches(int matches) {
-		this.matches = matches;
-	}
-
-	/**
-	 * Adds identifier to {@link #identifierColumns} list.
-	 * 
-	 * @param pair
-	 *          pair defining type of identifier and the identifier value
-	 */
-	public void addIdentifierColumn(Pair<MiriamType, String> pair) {
-		identifierColumns.add(pair);
-
-	}
-
-	/**
-	 * @return the reactionIdentifier
-	 * @see #reactionIdentifier
-	 */
-	public String getReactionIdentifier() {
-		return reactionIdentifier;
-	}
-
-	/**
-	 * @param reactionIdentifier
-	 *          the reactionIdentifier to set
-	 * @see #reactionIdentifier
-	 */
-	public void setReactionIdentifier(String reactionIdentifier) {
-		this.reactionIdentifier = reactionIdentifier;
-	}
-
-	/**
-	 * @return the lineWidth
-	 * @see #lineWidth
-	 */
-	public Double getLineWidth() {
-		return lineWidth;
-	}
-
-	/**
-	 * @param lineWidth
-	 *          the lineWidth to set
-	 * @see #lineWidth
-	 */
-	public void setLineWidth(Double lineWidth) {
-		this.lineWidth = lineWidth;
-	}
-
-	/**
-	 * @return the reverseReaction
-	 * @see #reverseReaction
-	 */
-	public Boolean getReverseReaction() {
-		return reverseReaction;
-	}
-
-	/**
-	 * @param reverseReaction
-	 *          the reverseReaction to set
-	 * @see #reverseReaction
-	 */
-	public void setReverseReaction(Boolean reverseReaction) {
-		this.reverseReaction = reverseReaction;
-	}
-
-	/**
-	 * Adds compartment name to {@link #compartments}.
-	 * 
-	 * @param name
-	 *          compartment name
-	 */
-	public void addCompartment(String name) {
-		compartments.add(name);
-	}
-
-	/**
-	 * Adds class type to {@link #types} list.
-	 * 
-	 * @param clazz
-	 *          class to add
-	 */
-	public void addType(Class<? extends Species> clazz) {
-		this.types.add(clazz);
-	}
-
-	/**
-	 * Extracts color from {@link ColorSchema} object.
-	 * 
-	 * @return color from {@link ColorSchema} object
-	 */
-	public Color getNormalizedColor() {
-		if (getColor() != null) {
-			return getColor();
-		} else {
-			return getColorForValue(getValue());
-		}
-	}
-
-	/**
-	 * Returns color from red - green scale for the given normalized double value
-	 * (from range -1,1).
-	 * 
-	 * @param value
-	 *          double value that should be converted into color
-	 * @return color for the double value
-	 */
-	protected Color getColorForValue(Double value) {
-		if (value > 0) {
-			int val = (int) ((1 - value) * MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT);
-			return new Color(val, MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT, val);
-		}
-		if (value < 0) {
-			int val = (int) ((1 + value) * MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT);
-			return new Color(MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT, val, val);
-		}
-		return Color.WHITE;
-	}
-
-	/**
-	 * @return the description
-	 * @see #description
-	 */
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * @param description
-	 *          the description to set
-	 * @see #description
-	 */
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	/**
-	 * Creates a copy of this object.
-	 * 
-	 * @return copy of the object
-	 */
-	public abstract ColorSchema copy();
-
-}
+package lcsb.mapviewer.model.map.layout;
+
+import java.awt.Color;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import lcsb.mapviewer.common.Pair;
+import lcsb.mapviewer.model.map.MiriamType;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+
+/**
+ * Entry of coloring schema used for changing colors in the map. It allows to
+ * identify some elements by use of the filters (by name, type, etcs.) and
+ * contains information about the color that should be assigned to the fileter
+ * elements.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public abstract class ColorSchema implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long							 serialVersionUID											= 1L;
+
+	/**
+	 * Base of the hex representation.
+	 */
+	private static final int							 HEX_BASE															= 16;
+
+	/**
+	 * Length of the string describing color in rgb: "#RRGGBB".
+	 */
+	private static final int							 COLOR_STRING_LENGTH									= 7;
+
+	/**
+	 * Where starts description of red color in stirng representing color.
+	 */
+	private static final int							 COLOR_SUBSTRING_START_RED						= 1;
+
+	/**
+	 * Where starts description of green color in stirng representing color.
+	 */
+	private static final int							 COLOR_SUBSTRING_START_GREEN					= 3;
+
+	/**
+	 * Where starts description of blue color in stirng representing color.
+	 */
+	private static final int							 COLOR_SUBSTRING_START_BLUE						= 5;
+
+	/**
+	 * Defines the maximum value of primary colors in RGB model (every color is
+	 * from range 0..255).
+	 */
+	private static final int							 MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT	= 255;
+
+	/**
+	 * Name of the {@link lcsb.mapviewer.db.model.map.Element Element}. If null
+	 * then this field will be skiped.
+	 */
+	private String												 name																	= null;
+
+	/**
+	 * Identifier of the reaction to change the color.
+	 */
+	private String												 reactionIdentifier										= null;
+
+	/**
+	 * Should the direction of highlighted reaction be reversed.
+	 */
+	private Boolean												 reverseReaction											= null;
+
+	/**
+	 * Width of the line in the reaction.
+	 */
+	private Double												 lineWidth														= null;
+
+	/**
+	 * In which compartments (identified by name) the element can occur.
+	 */
+	private List<String>									 compartments													= new ArrayList<String>();
+
+	/**
+	 * What types of element should be identified by this entry.
+	 */
+	private List<Class<? extends Alias>>	 types																= new ArrayList<>();
+
+	/**
+	 * Value (-1..1 range) that is assigned to filtered elements (it will be
+	 * transformed into color later on). Only one of the {@link #value} and
+	 * {@link #color} can be set.
+	 */
+	private Double												 value																= null;
+
+	/**
+	 * Color that is assigned to filtered elements. Only one of the {@link #value}
+	 * and {@link #color} can be set.
+	 */
+	private Color													 color																= null;
+
+	/**
+	 * General identifier that identifies the element.
+	 */
+	private String												 generalIdentifier										= null;
+
+	/**
+	 * List of specific identifiers that filter the elements.
+	 */
+	private List<Pair<MiriamType, String>> identifierColumns										= new ArrayList<>();
+
+	/**
+	 * Number of elements matched by this entry.
+	 */
+	private int														 matches															= 0;
+
+	/**
+	 * Short description of the entry.
+	 */
+	private String												 description;
+
+	/**
+	 * Default constructor.
+	 */
+	protected ColorSchema() {
+	}
+
+	/**
+	 * Initializes object by copying data from the parameter.
+	 * 
+	 * @param original
+	 *          original object used for initialization
+	 */
+	protected ColorSchema(ColorSchema original) {
+		this.setName(original.getName());
+		this.setReactionIdentifier(original.getReactionIdentifier());
+		this.setReverseReaction(original.getReverseReaction());
+		this.setLineWidth(original.getLineWidth());
+		this.addCompartments(original.getCompartments());
+		this.addTypes(original.getTypes());
+		this.setValue(original.getValue());
+		this.setColor(original.getColor());
+		this.setGeneralIdentifier(original.getGeneralIdentifier());
+		this.addIdentifierColumns(original.getIdentifierColumns());
+		this.setMatches(original.getMatches());
+		this.setDescription(original.getDescription());
+	}
+
+	/**
+	 * Adds identifiers to {@link #identifierColumns} list.
+	 * 
+	 * @param identifierColumnsList
+	 *          list of pairs defining type of identifier and the identifier value
+	 */
+	public void addIdentifierColumns(List<Pair<MiriamType, String>> identifierColumnsList) {
+		for (Pair<MiriamType, String> pair : identifierColumnsList) {
+			addIdentifierColumn(pair);
+		}
+
+	}
+
+	/**
+	 * Adds class types to {@link #types} list.
+	 * 
+	 * @param types2
+	 *          list of classes to add
+	 */
+	public void addTypes(List<Class<? extends Alias>> types2) {
+		for (Class<? extends Alias> clazz : types2) {
+			addType(clazz);
+		}
+	}
+
+	/**
+	 * Adds compartment names to {@link #compartments} list.
+	 * 
+	 * @param compartments2
+	 *          elements to add
+	 */
+	public void addCompartments(String[] compartments2) {
+		for (String string : compartments2) {
+			compartments.add(string);
+		}
+	}
+
+	/**
+	 * Adds compartment names to {@link #compartments} list.
+	 * 
+	 * @param compartments2
+	 *          elements to add
+	 */
+	public void addCompartments(Collection<String> compartments2) {
+		for (String string : compartments2) {
+			compartments.add(string);
+		}
+	}
+
+	/**
+	 * Sets {@link #color} from the string.
+	 * 
+	 * @param string
+	 *          color in text representation
+	 * @throws InvalidColorSchemaException
+	 *           thrown when string describing color is invalid
+	 */
+	public void setColor(String string) throws InvalidColorSchemaException {
+		if (string.length() != COLOR_STRING_LENGTH) {
+			throw new InvalidColorSchemaException("Invalid color value: " + string + ". Correct format: #xxxxxx (where x is a hex value)");
+		}
+		if (string.charAt(0) != '#') {
+			throw new InvalidColorSchemaException("Invalid color value: " + string + ". Correct format: #xxxxxx (where x is a hex value)");
+
+		} else {
+			setColor(new Color(Integer.valueOf(string.substring(COLOR_SUBSTRING_START_RED, COLOR_SUBSTRING_START_GREEN), HEX_BASE), //
+					Integer.valueOf(string.substring(COLOR_SUBSTRING_START_GREEN, COLOR_SUBSTRING_START_BLUE), HEX_BASE), //
+					Integer.valueOf(string.substring(COLOR_SUBSTRING_START_BLUE, COLOR_STRING_LENGTH), HEX_BASE)));
+		}
+
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder result = new StringBuilder();
+		result.append("[");
+		if (name != null) {
+			result.append(name + ",");
+		}
+		if (compartments.size() > 0) {
+			result.append("(");
+			for (String comp : compartments) {
+				result.append(comp + ",");
+			}
+			result.append("),");
+		}
+		if (types.size() > 0) {
+			result.append("(");
+			for (Class<?> clazz : types) {
+				result.append(clazz.getSimpleName() + ",");
+			}
+			result.append("),");
+		}
+		if (value != null) {
+			result.append(value + ",");
+		}
+		if (color != null) {
+			result.append(color + ",");
+		}
+		if (generalIdentifier != null) {
+			result.append(generalIdentifier + ",");
+		}
+		if (types.size() > 0) {
+			result.append("(");
+			for (Pair<MiriamType, String> pair : identifierColumns) {
+				result.append(pair.getLeft() + "-" + pair.getRight() + ",");
+			}
+			result.append("),");
+		}
+		result.append(matches + "]");
+		return result.toString();
+	}
+
+	/**
+	 * @return the name
+	 * @see #name
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * @param name
+	 *          the name to set
+	 * @see #name
+	 */
+	public void setName(String name) {
+		if (name == null) {
+			this.name = null;
+		} else {
+			this.name = name.trim();
+		}
+	}
+
+	/**
+	 * @return the compartments
+	 * @see #compartments
+	 */
+	public List<String> getCompartments() {
+		return compartments;
+	}
+
+	/**
+	 * @param compartments
+	 *          the compartments to set
+	 * @see #compartments
+	 */
+	public void setCompartments(List<String> compartments) {
+		this.compartments = compartments;
+	}
+
+	/**
+	 * @return the types
+	 * @see #types
+	 */
+	public List<Class<? extends Alias>> getTypes() {
+		return types;
+	}
+
+	/**
+	 * @param types
+	 *          the types to set
+	 * @see #types
+	 */
+	public void setTypes(List<Class<? extends Alias>> types) {
+		this.types = types;
+	}
+
+	/**
+	 * @return the value
+	 * @see #value
+	 */
+	public Double getValue() {
+		return value;
+	}
+
+	/**
+	 * @param value
+	 *          the value to set
+	 * @see #value
+	 */
+	public void setValue(Double value) {
+		this.value = value;
+	}
+
+	/**
+	 * @return the color
+	 * @see #color
+	 */
+	public Color getColor() {
+		return color;
+	}
+
+	/**
+	 * @param color
+	 *          the color to set
+	 * @see #color
+	 */
+	public void setColor(Color color) {
+		this.color = color;
+	}
+
+	/**
+	 * @return the generalIdentifier
+	 * @see #generalIdentifier
+	 */
+	public String getGeneralIdentifier() {
+		return generalIdentifier;
+	}
+
+	/**
+	 * @param generalIdentifier
+	 *          the generalIdentifier to set
+	 * @see #generalIdentifier
+	 */
+	public void setGeneralIdentifier(String generalIdentifier) {
+		this.generalIdentifier = generalIdentifier;
+	}
+
+	/**
+	 * @return the identifierColumns
+	 * @see #identifierColumns
+	 */
+	public List<Pair<MiriamType, String>> getIdentifierColumns() {
+		return identifierColumns;
+	}
+
+	/**
+	 * @param identifierColumns
+	 *          the identifierColumns to set
+	 * @see #identifierColumns
+	 */
+	public void setIdentifierColumns(List<Pair<MiriamType, String>> identifierColumns) {
+		this.identifierColumns = identifierColumns;
+	}
+
+	/**
+	 * @return the matches
+	 * @see #matches
+	 */
+	public int getMatches() {
+		return matches;
+	}
+
+	/**
+	 * @param matches
+	 *          the matches to set
+	 * @see #matches
+	 */
+	public void setMatches(int matches) {
+		this.matches = matches;
+	}
+
+	/**
+	 * Adds identifier to {@link #identifierColumns} list.
+	 * 
+	 * @param pair
+	 *          pair defining type of identifier and the identifier value
+	 */
+	public void addIdentifierColumn(Pair<MiriamType, String> pair) {
+		identifierColumns.add(pair);
+
+	}
+
+	/**
+	 * @return the reactionIdentifier
+	 * @see #reactionIdentifier
+	 */
+	public String getReactionIdentifier() {
+		return reactionIdentifier;
+	}
+
+	/**
+	 * @param reactionIdentifier
+	 *          the reactionIdentifier to set
+	 * @see #reactionIdentifier
+	 */
+	public void setReactionIdentifier(String reactionIdentifier) {
+		this.reactionIdentifier = reactionIdentifier;
+	}
+
+	/**
+	 * @return the lineWidth
+	 * @see #lineWidth
+	 */
+	public Double getLineWidth() {
+		return lineWidth;
+	}
+
+	/**
+	 * @param lineWidth
+	 *          the lineWidth to set
+	 * @see #lineWidth
+	 */
+	public void setLineWidth(Double lineWidth) {
+		this.lineWidth = lineWidth;
+	}
+
+	/**
+	 * @return the reverseReaction
+	 * @see #reverseReaction
+	 */
+	public Boolean getReverseReaction() {
+		return reverseReaction;
+	}
+
+	/**
+	 * @param reverseReaction
+	 *          the reverseReaction to set
+	 * @see #reverseReaction
+	 */
+	public void setReverseReaction(Boolean reverseReaction) {
+		this.reverseReaction = reverseReaction;
+	}
+
+	/**
+	 * Adds compartment name to {@link #compartments}.
+	 * 
+	 * @param name
+	 *          compartment name
+	 */
+	public void addCompartment(String name) {
+		compartments.add(name);
+	}
+
+	/**
+	 * Adds class type to {@link #types} list.
+	 * 
+	 * @param clazz
+	 *          class to add
+	 */
+	public void addType(Class<? extends Alias> clazz) {
+		this.types.add(clazz);
+	}
+
+	/**
+	 * Extracts color from {@link ColorSchema} object.
+	 * 
+	 * @return color from {@link ColorSchema} object
+	 */
+	public Color getNormalizedColor() {
+		if (getColor() != null) {
+			return getColor();
+		} else {
+			return getColorForValue(getValue());
+		}
+	}
+
+	/**
+	 * Returns color from red - green scale for the given normalized double value
+	 * (from range -1,1).
+	 * 
+	 * @param value
+	 *          double value that should be converted into color
+	 * @return color for the double value
+	 */
+	protected Color getColorForValue(Double value) {
+		if (value > 0) {
+			int val = (int) ((1 - value) * MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT);
+			return new Color(val, MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT, val);
+		}
+		if (value < 0) {
+			int val = (int) ((1 + value) * MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT);
+			return new Color(MAX_SINGLE_COLOR_VALUE_IN_RGB_FORMAT, val, val);
+		}
+		return Color.WHITE;
+	}
+
+	/**
+	 * @return the description
+	 * @see #description
+	 */
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * @param description
+	 *          the description to set
+	 * @see #description
+	 */
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	/**
+	 * Creates a copy of this object.
+	 * 
+	 * @return copy of the object
+	 */
+	public abstract ColorSchema copy();
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/AntisenseRnaAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/AntisenseRnaAlias.java
index e678391031..6ceb4fcff9 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/AntisenseRnaAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/AntisenseRnaAlias.java
@@ -13,8 +13,6 @@ import org.hibernate.annotations.LazyCollection;
 import org.hibernate.annotations.LazyCollectionOption;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
 
 @Entity
 @DiscriminatorValue("ANTISENSE_RNA_ALIAS")
@@ -33,15 +31,6 @@ public class AntisenseRnaAlias extends SpeciesAlias {
 	AntisenseRnaAlias() {
 	}
 
-	public AntisenseRnaAlias(AntisenseRna antisenseRna) {
-		super(antisenseRna);
-	}
-
-	public AntisenseRnaAlias(String aliasId, AntisenseRna antisenseRna) {
-		this(antisenseRna);
-		super.setAliasId(aliasId);
-	}
-
 	public AntisenseRnaAlias(AntisenseRnaAlias original) {
 		super(original);
 		for (AntisenseRnaRegionAlias region : original.getRegions()) {
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/AntisenseRnaRegionAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/AntisenseRnaRegionAlias.java
index 6e7eb8fd71..b2f96d7a56 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/AntisenseRnaRegionAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/AntisenseRnaRegionAlias.java
@@ -18,13 +18,12 @@ import org.hibernate.annotations.CascadeType;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 
 /**
  * This structure contains information about antisense rna region (rna fragment
  * of interest) for a specific
- * {@link lcsb.mapviewer.model.map.species.AntisenseRna AntisenseRna}.
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna
+ * AntisenseRna}.
  * 
  * @author Piotr Gawron
  * 
@@ -41,7 +40,8 @@ public class AntisenseRnaRegionAlias implements Serializable {
 
 	/**
 	 * Enum that enlists types of available modification regions in
-	 * {@link lcsb.mapviewer.model.map.species.AntisenseRna AntisenseRna}.
+	 * {@link lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna
+	 * AntisenseRna}.
 	 * 
 	 * @author Piotr Gawron
 	 * 
@@ -171,7 +171,7 @@ public class AntisenseRnaRegionAlias implements Serializable {
 	@Cascade({ CascadeType.ALL })
 	@ManyToOne(fetch = FetchType.LAZY)
 	@JoinColumn(name = "idSpeciesDb")
-	private AntisenseRnaAlias species;
+	private AntisenseRnaAlias			 species;
 
 	/**
 	 * Default constructor.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ChemicalAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ChemicalAlias.java
index 1f5c88463f..b9a0c730c2 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ChemicalAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ChemicalAlias.java
@@ -4,8 +4,6 @@ import javax.persistence.Column;
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
-import lcsb.mapviewer.model.map.species.Chemical;
-
 @Entity
 @DiscriminatorValue("CHEMICAL_ALIAS")
 public abstract class ChemicalAlias extends SpeciesAlias {
@@ -13,7 +11,7 @@ public abstract class ChemicalAlias extends SpeciesAlias {
 	/**
 	 * 
 	 */
-	private static final long serialVersionUID = 1L;
+	private static final long	serialVersionUID = 1L;
 
 	/**
 	 * <a href=
@@ -21,7 +19,7 @@ public abstract class ChemicalAlias extends SpeciesAlias {
 	 * >Smiles</a> parameter for the chemical.
 	 */
 	@Column(name = "smiles", columnDefinition = "TEXT")
-	private String smiles;
+	private String						smiles;
 
 	/**
 	 * <a href= "http://en.wikipedia.org/wiki/International_Chemical_Identifier" >
@@ -29,7 +27,7 @@ public abstract class ChemicalAlias extends SpeciesAlias {
 	 */
 
 	@Column(name = "inchi", columnDefinition = "TEXT")
-	private String inChI;
+	private String						inChI;
 
 	/**
 	 * <a href=
@@ -37,15 +35,11 @@ public abstract class ChemicalAlias extends SpeciesAlias {
 	 * InChIKey</a> parameter for the chemical.
 	 */
 
-	private String inChIKey;
+	private String						inChIKey;
 
 	ChemicalAlias() {
 	}
 
-	public ChemicalAlias(Chemical chemical) {
-		super(chemical);
-	}
-
 	public ChemicalAlias(ChemicalAlias original) {
 		super(original);
 		smiles = original.getSmiles();
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAlias.java
index e5fa5e3f7c..1971655bdd 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAlias.java
@@ -18,7 +18,6 @@ import org.hibernate.annotations.Type;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 
 /**
  * This class defines alias for compartment in the model.
@@ -116,22 +115,6 @@ public class CompartmentAlias extends Alias {
 		setColor(DEFAULT_COLOR);
 	}
 
-	/**
-	 * Constructor that points on the compartment.
-	 * 
-	 * @param compartment
-	 *          alias will reference to this compartment
-	 */
-	public CompartmentAlias(Compartment compartment) {
-		this();
-		throw new NotImplementedException();
-	}
-
-	public CompartmentAlias(String aliasId, Compartment compartment) {
-		this(compartment);
-		setAliasId(aliasId);
-	}
-
 	public CompartmentAlias(String aliasId) {
 		setAliasId(aliasId);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasComparator.java
index 014897a763..fc7b054678 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasComparator.java
@@ -11,8 +11,6 @@ import lcsb.mapviewer.common.comparator.DoubleComparator;
 import lcsb.mapviewer.common.comparator.IntegerComparator;
 import lcsb.mapviewer.common.comparator.PointComparator;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.agregator.CompartmentComparator;
 
 /**
  * This class implements comparator interface for CompartmentAlias.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ComplexAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ComplexAlias.java
index c9f6e4459e..44adf66474 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ComplexAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ComplexAlias.java
@@ -15,7 +15,6 @@ import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 
 /**
  * Class that represents alias of a complex in the model.
@@ -73,16 +72,6 @@ public class ComplexAlias extends SpeciesAlias {
 		this.structuralState = original.getStructuralState();
 	}
 
-	/**
-	 * Constructor that creates alias with reference to species.
-	 * 
-	 * @param species
-	 *          rederence to this complex will be used by alias
-	 */
-	public ComplexAlias(ComplexSpecies species) {
-		super(species);
-	}
-
 	/**
 	 * Constructor that creates complex alias with given alias id.
 	 * 
@@ -93,11 +82,6 @@ public class ComplexAlias extends SpeciesAlias {
 		super(aliasId);
 	}
 
-	public ComplexAlias(String aliasId, ComplexSpecies cSpecies) {
-		this(cSpecies);
-		setAliasId(aliasId);
-	}
-
 	/**
 	 * Adds alias to the complex.
 	 * 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/DegradedAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/DegradedAlias.java
index 9fa2c266d5..02c923732c 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/DegradedAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/DegradedAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Degraded;
 
 @Entity
 @DiscriminatorValue("DEGRADED_ALIAS")
@@ -12,19 +11,10 @@ public class DegradedAlias extends SpeciesAlias {
 	DegradedAlias() {
 	}
 
-	public DegradedAlias(Degraded degraded) {
-		super(degraded);
-	}
-
 	public DegradedAlias(DegradedAlias original) {
 		super(original);
 	}
 
-	public DegradedAlias(String aliasId, Degraded degraded) {
-		super(degraded);
-		super.setAliasId(aliasId);
-	}
-
 	public DegradedAlias(String aliasId) {
 		super.setAliasId(aliasId);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/DrugAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/DrugAlias.java
index 7da88f1cf7..e54ed5fd71 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/DrugAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/DrugAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Drug;
 
 @Entity
 @DiscriminatorValue("DRUG_ALIAS")
@@ -12,10 +11,6 @@ public class DrugAlias extends SpeciesAlias {
 	DrugAlias() {
 	}
 
-	public DrugAlias(Drug drug) {
-		super(drug);
-	}
-
 	public DrugAlias(DrugAlias original) {
 		super(original);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/GeneAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/GeneAlias.java
index 93f516a48d..04e3b1fdb8 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/GeneAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/GeneAlias.java
@@ -13,7 +13,6 @@ import org.hibernate.annotations.LazyCollection;
 import org.hibernate.annotations.LazyCollectionOption;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Gene;
 
 @Entity
 @DiscriminatorValue("GENE_ALIAS")
@@ -35,10 +34,6 @@ public class GeneAlias extends SpeciesAlias {
 	GeneAlias() {
 	}
 
-	public GeneAlias(Gene gene) {
-		super(gene);
-	}
-
 	public GeneAlias(GeneAlias original) {
 		super(original);
 		for (ModificationResidueAlias mr : original.getModificationResidues()) {
@@ -52,11 +47,6 @@ public class GeneAlias extends SpeciesAlias {
 
 	}
 
-	public GeneAlias(String aliasId, Gene gene) {
-		super(gene);
-		super.setAliasId(aliasId);
-	}
-
 	public GeneAlias(String aliasId) {
 		setAliasId(aliasId);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/GenericProteinAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/GenericProteinAlias.java
index 20a95c4291..aa33839f1f 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/GenericProteinAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/GenericProteinAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 @Entity
 @DiscriminatorValue("GENERIC_PROTEIN_ALIAS")
@@ -12,14 +11,6 @@ public class GenericProteinAlias extends ProteinAlias {
 	GenericProteinAlias() {
 	}
 
-	public GenericProteinAlias(GenericProtein genericProtein) {
-		super(genericProtein);
-	}
-
-	public GenericProteinAlias(String aliasId, GenericProtein genericProtein) {
-		super(aliasId, genericProtein);
-	}
-
 	public GenericProteinAlias(String aliasId) {
 		super(aliasId);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/IonAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/IonAlias.java
index 6bf65a70a4..9a76148e33 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/IonAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/IonAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Ion;
 
 @Entity
 @DiscriminatorValue("ION_ALIAS")
@@ -12,13 +11,10 @@ public class IonAlias extends ChemicalAlias {
 	IonAlias() {
 	}
 
-	public IonAlias(Ion ion) {
-		super(ion);
-	}
-
 	public IonAlias(IonAlias original) {
 		super(original);
 	}
+
 	public IonAlias(String aliasId) {
 		setAliasId(aliasId);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/IonChannelProteinAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/IonChannelProteinAlias.java
index 1b90bc3a7a..820cfd5b95 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/IonChannelProteinAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/IonChannelProteinAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.IonChannelProtein;
 
 @Entity
 @DiscriminatorValue("ION_CHANNEL_PROTEIN_ALIAS")
@@ -12,10 +11,6 @@ public class IonChannelProteinAlias extends ProteinAlias {
 	IonChannelProteinAlias() {
 	}
 
-	public IonChannelProteinAlias(IonChannelProtein ionChannelProtein) {
-		super(ionChannelProtein);
-	}
-
 	public IonChannelProteinAlias(IonChannelProteinAlias original) {
 		super(original);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ModificationResidueAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ModificationResidueAlias.java
index cd0a2e7fbf..475464ccce 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ModificationResidueAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ModificationResidueAlias.java
@@ -16,7 +16,6 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 
 /**
  * This class represent modification residue in protein and gene. However, it is
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/ModificationState.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ModificationState.java
similarity index 94%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/fields/ModificationState.java
rename to model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ModificationState.java
index f18e6182fe..5fa20a125a 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/ModificationState.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ModificationState.java
@@ -1,152 +1,152 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-/**
- * Defines a type of modification (in protein or rna). Possible values are:
- * <ul>
- * <li>{@link ModificationState#ACETYLATED ACETYLATED},</li>
- * <li>{@link ModificationState#DONT_CARE DON'T CARE},</li>
- * <li>{@link ModificationState#EMPTY EMPTY},</li>
- * <li>{@link ModificationState#GLYCOSYLATED GLYCOSYLATED},</li>
- * <li>{@link ModificationState#HYDROXYLATED HYDROXYLATED},</li>
- * <li>{@link ModificationState#METHYLATED METHYLATED},</li>
- * <li>{@link ModificationState#MYRISTOYLATED MYRISTOYLATED},</li>
- * <li>{@link ModificationState#PALMYTOYLATED PALMYTOYLATED},</li>
- * <li>{@link ModificationState#PHOSPHORYLATED PHOSPHORYLATED},</li>
- * <li>{@link ModificationState#PRENYLATED PRENYLATED},</li>
- * <li>{@link ModificationState#PROTONATED PROTONATED},</li>
- * <li>{@link ModificationState#SULFATED SULFATED},</li>
- * <li>{@link ModificationState#UBIQUITINATED UBIQUITINATED},</li>
- * <li>{@link ModificationState#UNKNOWN UNKNOWN}.</li>
- * </ul>
- * 
- * @author Piotr Gawron
- * 
- */
-public enum ModificationState {
-	
-	/**
-	 * Phosporylated state.
-	 */
-	PHOSPHORYLATED("phosphorylated", "P"), //
-
-	/**
-	 * Acetylated state.
-	 */
-	ACETYLATED("acetylated", "Ac"), //
-
-	/**
-	 * Ubiquitinated state.
-	 */
-	UBIQUITINATED("ubiquitinated", "Ub"), //
-
-	/**
-	 * Methylated state.
-	 */
-	METHYLATED("methylated", "Me"), //
-
-	/**
-	 * Hydroxylated state.
-	 */
-	HYDROXYLATED("hydroxylated", "OH"), //
-
-	/**
-	 * Myristoylated state.
-	 */
-	MYRISTOYLATED("myristoylated", "My"), //
-
-	/**
-	 * Sulfated state.
-	 */
-	SULFATED("sulfated", "S"), //
-
-	/**
-	 * Prenylated state.
-	 */
-	PRENYLATED("prenylated", "Pr"), //
-
-	/**
-	 * Glycosylated state.
-	 */
-	GLYCOSYLATED("glycosylated", "G"), //
-
-	/**
-	 * Palmytoylated state.
-	 */
-	PALMYTOYLATED("palmytoylated", "Pa"), //
-
-	/**
-	 * Unknown state.
-	 */
-	UNKNOWN("unknown", "?"), //
-
-	/**
-	 * Empty state.
-	 */
-	EMPTY("empty", ""), //
-
-	/**
-	 * Protonated state.
-	 */
-	PROTONATED("protonated", "H"), //
-
-	/**
-	 * We don't care in which state it is.
-	 */
-	DONT_CARE("don't care", "*");
-
-	/**
-	 * Full name of the modification.
-	 */
-
-	private String fullName;
-	/**
-	 * Abbreviation used for the modification.
-	 */
-	private String abbreviation;
-
-	/**
-	 * Default constructor with the name and abbreviation.
-	 * 
-	 * @param name
-	 *          name used for this state
-	 * @param abbreviation
-	 *          abbreviation used in this state
-	 */
-	ModificationState(String name, String abbreviation) {
-		this.fullName = name;
-		this.abbreviation = abbreviation;
-	}
-
-	/**
-	 * @return the fullName
-	 * @see #fullName
-	 */
-	public String getFullName() {
-		return fullName;
-	}
-
-	/**
-	 * @return the abbreviation
-	 * @see #abbreviation
-	 */
-	public String getAbbreviation() {
-		return abbreviation;
-	}
-
-	/**
-	 * Returns {@link ModificationState} identified by the full name.
-	 * 
-	 * @param name
-	 *          full name of the state
-	 * @return {@link ModificationState} identified by the full name
-	 */
-	public static ModificationState getByName(String name) {
-		for (ModificationState state : values()) {
-			if (state.getFullName().equalsIgnoreCase(name)) {
-				return state;
-			}
-		}
-		return null;
-	}
-
-}
+package lcsb.mapviewer.model.map.layout.alias;
+
+/**
+ * Defines a type of modification (in protein or rna). Possible values are:
+ * <ul>
+ * <li>{@link ModificationState#ACETYLATED ACETYLATED},</li>
+ * <li>{@link ModificationState#DONT_CARE DON'T CARE},</li>
+ * <li>{@link ModificationState#EMPTY EMPTY},</li>
+ * <li>{@link ModificationState#GLYCOSYLATED GLYCOSYLATED},</li>
+ * <li>{@link ModificationState#HYDROXYLATED HYDROXYLATED},</li>
+ * <li>{@link ModificationState#METHYLATED METHYLATED},</li>
+ * <li>{@link ModificationState#MYRISTOYLATED MYRISTOYLATED},</li>
+ * <li>{@link ModificationState#PALMYTOYLATED PALMYTOYLATED},</li>
+ * <li>{@link ModificationState#PHOSPHORYLATED PHOSPHORYLATED},</li>
+ * <li>{@link ModificationState#PRENYLATED PRENYLATED},</li>
+ * <li>{@link ModificationState#PROTONATED PROTONATED},</li>
+ * <li>{@link ModificationState#SULFATED SULFATED},</li>
+ * <li>{@link ModificationState#UBIQUITINATED UBIQUITINATED},</li>
+ * <li>{@link ModificationState#UNKNOWN UNKNOWN}.</li>
+ * </ul>
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public enum ModificationState {
+	
+	/**
+	 * Phosporylated state.
+	 */
+	PHOSPHORYLATED("phosphorylated", "P"), //
+
+	/**
+	 * Acetylated state.
+	 */
+	ACETYLATED("acetylated", "Ac"), //
+
+	/**
+	 * Ubiquitinated state.
+	 */
+	UBIQUITINATED("ubiquitinated", "Ub"), //
+
+	/**
+	 * Methylated state.
+	 */
+	METHYLATED("methylated", "Me"), //
+
+	/**
+	 * Hydroxylated state.
+	 */
+	HYDROXYLATED("hydroxylated", "OH"), //
+
+	/**
+	 * Myristoylated state.
+	 */
+	MYRISTOYLATED("myristoylated", "My"), //
+
+	/**
+	 * Sulfated state.
+	 */
+	SULFATED("sulfated", "S"), //
+
+	/**
+	 * Prenylated state.
+	 */
+	PRENYLATED("prenylated", "Pr"), //
+
+	/**
+	 * Glycosylated state.
+	 */
+	GLYCOSYLATED("glycosylated", "G"), //
+
+	/**
+	 * Palmytoylated state.
+	 */
+	PALMYTOYLATED("palmytoylated", "Pa"), //
+
+	/**
+	 * Unknown state.
+	 */
+	UNKNOWN("unknown", "?"), //
+
+	/**
+	 * Empty state.
+	 */
+	EMPTY("empty", ""), //
+
+	/**
+	 * Protonated state.
+	 */
+	PROTONATED("protonated", "H"), //
+
+	/**
+	 * We don't care in which state it is.
+	 */
+	DONT_CARE("don't care", "*");
+
+	/**
+	 * Full name of the modification.
+	 */
+
+	private String fullName;
+	/**
+	 * Abbreviation used for the modification.
+	 */
+	private String abbreviation;
+
+	/**
+	 * Default constructor with the name and abbreviation.
+	 * 
+	 * @param name
+	 *          name used for this state
+	 * @param abbreviation
+	 *          abbreviation used in this state
+	 */
+	ModificationState(String name, String abbreviation) {
+		this.fullName = name;
+		this.abbreviation = abbreviation;
+	}
+
+	/**
+	 * @return the fullName
+	 * @see #fullName
+	 */
+	public String getFullName() {
+		return fullName;
+	}
+
+	/**
+	 * @return the abbreviation
+	 * @see #abbreviation
+	 */
+	public String getAbbreviation() {
+		return abbreviation;
+	}
+
+	/**
+	 * Returns {@link ModificationState} identified by the full name.
+	 * 
+	 * @param name
+	 *          full name of the state
+	 * @return {@link ModificationState} identified by the full name
+	 */
+	public static ModificationState getByName(String name) {
+		for (ModificationState state : values()) {
+			if (state.getFullName().equalsIgnoreCase(name)) {
+				return state;
+			}
+		}
+		return null;
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/PhenotypeAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/PhenotypeAlias.java
index c9a84b72de..49526e06a8 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/PhenotypeAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/PhenotypeAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Phenotype;
 
 @Entity
 @DiscriminatorValue("PHENTOYPE_ALIAS")
@@ -13,10 +12,6 @@ public class PhenotypeAlias extends SpeciesAlias {
 	PhenotypeAlias() {
 	}
 
-	public PhenotypeAlias(Phenotype phenotype) {
-		super(phenotype);
-	}
-
 	public PhenotypeAlias(PhenotypeAlias original) {
 		super(original);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/PositionToCompartment.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/PositionToCompartment.java
similarity index 78%
rename from model/src/main/java/lcsb/mapviewer/model/map/species/fields/PositionToCompartment.java
rename to model/src/main/java/lcsb/mapviewer/model/map/layout/alias/PositionToCompartment.java
index a8467cae90..cb512ced9c 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/PositionToCompartment.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/PositionToCompartment.java
@@ -1,75 +1,76 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-/**
- * Defines possible position of {@link lcsb.mapviewer.model.map.species.Species}
- * on {@link lcsb.mapviewer.model.map.agregator.Compartment}.
- * 
- * @author Piotr Gawron
- * 
- */
-public enum PositionToCompartment {
-	
-	/**
-	 * Species is inside compartment.
-	 */
-	INSIDE("inside"),
-	
-	/**
-	 * Species is inside the border.
-	 */
-	INSIDE_OF_MEMBRANE("insideOfMembrane"),
-	
-	/**
-	 * Species is crossing the border.
-	 */
-	TRANSMEMBRANE("transmembrane"),
-	
-	/**
-	 * Species is on outer border of compartment.
-	 */
-	OUTER_SURFACE("outerSurface"),
-	
-	/**
-	 * Species is on inner border of compartment.
-	 */
-	INNER_SURFACE("innerSurface");
-
-	/**
-	 * String representing the position.
-	 */
-	private String	stringName;
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param stringName
-	 *          {@link #stringName}
-	 */
-	PositionToCompartment(String stringName) {
-		this.stringName = stringName;
-	}
-
-	/**
-	 * @return the stringName
-	 * @see #stringName
-	 */
-	public String getStringName() {
-		return stringName;
-	}
-
-	/**
-	 * Returns {@link PositionToCompartment} based on the {@link #stringName}.
-	 * 
-	 * @param string
-	 *          {@link #stringName}
-	 * @return {@link PositionToCompartment} based on the {@link #stringName}
-	 */
-	public static PositionToCompartment getByString(String string) {
-		for (PositionToCompartment pos : PositionToCompartment.values()) {
-			if (pos.getStringName().equalsIgnoreCase(string)) {
-				return pos;
-			}
-		}
-		return null;
-	}
-}
+package lcsb.mapviewer.model.map.layout.alias;
+
+/**
+ * Defines possible position of
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Species} on
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Compartment}.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public enum PositionToCompartment {
+
+	/**
+	 * Species is inside compartment.
+	 */
+	INSIDE("inside"),
+
+	/**
+	 * Species is inside the border.
+	 */
+	INSIDE_OF_MEMBRANE("insideOfMembrane"),
+
+	/**
+	 * Species is crossing the border.
+	 */
+	TRANSMEMBRANE("transmembrane"),
+
+	/**
+	 * Species is on outer border of compartment.
+	 */
+	OUTER_SURFACE("outerSurface"),
+
+	/**
+	 * Species is on inner border of compartment.
+	 */
+	INNER_SURFACE("innerSurface");
+
+	/**
+	 * String representing the position.
+	 */
+	private String stringName;
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param stringName
+	 *          {@link #stringName}
+	 */
+	PositionToCompartment(String stringName) {
+		this.stringName = stringName;
+	}
+
+	/**
+	 * @return the stringName
+	 * @see #stringName
+	 */
+	public String getStringName() {
+		return stringName;
+	}
+
+	/**
+	 * Returns {@link PositionToCompartment} based on the {@link #stringName}.
+	 * 
+	 * @param string
+	 *          {@link #stringName}
+	 * @return {@link PositionToCompartment} based on the {@link #stringName}
+	 */
+	public static PositionToCompartment getByString(String string) {
+		for (PositionToCompartment pos : PositionToCompartment.values()) {
+			if (pos.getStringName().equalsIgnoreCase(string)) {
+				return pos;
+			}
+		}
+		return null;
+	}
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ProteinAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ProteinAlias.java
index 82ff459246..673f8b0b68 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ProteinAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ProteinAlias.java
@@ -12,8 +12,6 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.annotations.LazyCollection;
 import org.hibernate.annotations.LazyCollectionOption;
 
-import lcsb.mapviewer.model.map.species.Protein;
-
 @Entity
 @DiscriminatorValue("PROTEIN_ALIAS")
 public abstract class ProteinAlias extends SpeciesAlias {
@@ -39,15 +37,6 @@ public abstract class ProteinAlias extends SpeciesAlias {
 	ProteinAlias() {
 	}
 
-	public ProteinAlias(String aliasId, Protein protein) {
-		super(protein);
-		this.setAliasId(aliasId);
-	}
-
-	public ProteinAlias(Protein protein) {
-		super(protein);
-	}
-
 	public ProteinAlias(ProteinAlias original) {
 		super(original);
 		this.structuralState = original.getStructuralState();
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ReceptorProteinAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ReceptorProteinAlias.java
index 9b5bdb4aa6..ea4ed55217 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ReceptorProteinAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/ReceptorProteinAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.ReceptorProtein;
 
 @Entity
 @DiscriminatorValue("RECEPTOR_PROTEIN_ALIAS")
@@ -12,10 +11,6 @@ public class ReceptorProteinAlias extends ProteinAlias {
 	ReceptorProteinAlias() {
 	}
 
-	public ReceptorProteinAlias(ReceptorProtein receptorProtein) {
-		super(receptorProtein);
-	}
-
 	public ReceptorProteinAlias(ReceptorProteinAlias original) {
 		super(original);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/RnaAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/RnaAlias.java
index 79cbbd71a4..38ce0e289b 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/RnaAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/RnaAlias.java
@@ -13,7 +13,6 @@ import org.hibernate.annotations.LazyCollection;
 import org.hibernate.annotations.LazyCollectionOption;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Rna;
 
 @Entity
 @DiscriminatorValue("RNA_ALIAS")
@@ -23,7 +22,7 @@ public class RnaAlias extends SpeciesAlias {
 	 * 
 	 */
 	private static final long		 serialVersionUID	= 1L;
-	
+
 	/**
 	 * List of rna regions (some rna sequences) in this object.
 	 */
@@ -35,10 +34,6 @@ public class RnaAlias extends SpeciesAlias {
 	RnaAlias() {
 	}
 
-	public RnaAlias(Rna rna) {
-		super(rna);
-	}
-
 	public RnaAlias(RnaAlias original) {
 		super(original);
 		for (RnaRegionAlias region : original.getRegions()) {
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/RnaRegionAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/RnaRegionAlias.java
index e2200da4d1..ee5053a324 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/RnaRegionAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/RnaRegionAlias.java
@@ -15,12 +15,11 @@ import javax.persistence.Table;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 
 /**
  * This structure contains information about rna region (rna fragment of
- * interest) for a specific {@link lcsb.mapviewer.model.map.species.Rna Rna}.
+ * interest) for a specific
+ * {@link lcsb.mapviewer.converter.model.celldesigner.structure.Rna Rna}.
  * 
  * @author Piotr Gawron
  * 
@@ -103,7 +102,7 @@ public class RnaRegionAlias implements Serializable {
 	 */
 	@ManyToOne(fetch = FetchType.LAZY)
 	@JoinColumn(name = "idSpeciesDb")
-	private RnaAlias			species;
+	private RnaAlias						species;
 
 	/**
 	 * Default constructor.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SimpleMoleculeAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SimpleMoleculeAlias.java
index 8072a549ae..95a4002f7e 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SimpleMoleculeAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SimpleMoleculeAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 
 @Entity
 @DiscriminatorValue("SIMPLE_MOLECULE_ALIAS")
@@ -12,19 +11,10 @@ public class SimpleMoleculeAlias extends ChemicalAlias {
 	SimpleMoleculeAlias() {
 	}
 
-	public SimpleMoleculeAlias(SimpleMolecule simpleMolecule) {
-		super(simpleMolecule);
-	}
-
 	public SimpleMoleculeAlias(SimpleMoleculeAlias original) {
 		super(original);
 	}
 
-	public SimpleMoleculeAlias(String aliasId, SimpleMolecule species) {
-		super(species);
-		super.setAliasId(aliasId);
-	}
-
 	public SimpleMoleculeAlias(String aliasId) {
 		setAliasId(aliasId);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAlias.java
index 9104251a21..d5c353c94b 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAlias.java
@@ -16,10 +16,7 @@ import org.apache.log4j.Logger;
 import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 
-import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.ReactionNode;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.fields.PositionToCompartment;
 
 /**
  * {@link Alias} structure used for representing {@link Species}.
@@ -145,17 +142,6 @@ public abstract class SpeciesAlias extends Alias {
 		state = "usual";
 	}
 
-	/**
-	 * Constructor with species to which alias will refer.
-	 * 
-	 * @param species
-	 *          {@link #species}
-	 */
-	public SpeciesAlias(Species species) {
-		this();
-		throw new NotImplementedException();
-	}
-
 	/**
 	 * Constructor that initializes data with the information given in the
 	 * parameter.
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasComparator.java
index fd18b76c3d..d9ebdf31f6 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasComparator.java
@@ -10,8 +10,6 @@ import lcsb.mapviewer.common.comparator.DoubleComparator;
 import lcsb.mapviewer.common.comparator.IntegerComparator;
 import lcsb.mapviewer.common.comparator.StringComparator;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.ElementComparator;
-import lcsb.mapviewer.model.map.species.SpeciesComparator;
 
 /**
  * This class implements comparator interface for SpeciesAlias. It also handles
@@ -133,7 +131,6 @@ public class SpeciesAliasComparator implements Comparator<SpeciesAlias> {
 
 		DoubleComparator doubleComparator = new DoubleComparator(epsilon);
 		BooleanComparator booleanComparator = new BooleanComparator();
-		SpeciesComparator speciesComparator = new SpeciesComparator(epsilon);
 		IntegerComparator integerComparator = new IntegerComparator();
 
 		if (booleanComparator.compare(arg0.getActivity(), arg1.getActivity()) != 0) {
@@ -156,7 +153,6 @@ public class SpeciesAliasComparator implements Comparator<SpeciesAlias> {
 			return stringComparator.compare(arg0.getAliasStatePrefix(), arg1.getAliasStatePrefix());
 		}
 
-
 		if (integerComparator.compare(arg0.getInitialAmount(), arg1.getInitialAmount()) != 0) {
 			logger.debug("Initial amount different: " + arg0.getInitialAmount() + ", " + arg1.getInitialAmount());
 			return integerComparator.compare(arg0.getInitialAmount(), arg1.getInitialAmount());
@@ -196,7 +192,7 @@ public class SpeciesAliasComparator implements Comparator<SpeciesAlias> {
 			logger.debug("Hypothetical different: \"" + arg0.isHypothetical() + "\", \"" + arg1.isHypothetical() + "\"");
 			return booleanComparator.compare(arg0.isHypothetical(), arg1.isHypothetical());
 		}
-		
+
 		return 0;
 	}
 }
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/TruncatedProteinAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/TruncatedProteinAlias.java
index e2d5eb4c9b..2e14310c2e 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/TruncatedProteinAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/TruncatedProteinAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.TruncatedProtein;
 
 @Entity
 @DiscriminatorValue("TRUNCATED_PROTEIN_ALIAS")
@@ -12,10 +11,6 @@ public class TruncatedProteinAlias extends ProteinAlias {
 	TruncatedProteinAlias() {
 	}
 
-	public TruncatedProteinAlias(TruncatedProtein truncateProtein) {
-		super(truncateProtein);
-	}
-
 	public TruncatedProteinAlias(TruncatedProteinAlias original) {
 		super(original);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/UnknownAlias.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/UnknownAlias.java
index 85e8f6fa8e..40eb909880 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/UnknownAlias.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/alias/UnknownAlias.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.Unknown;
 
 @Entity
 @DiscriminatorValue("UNKNOWN_ALIAS")
@@ -12,10 +11,6 @@ public class UnknownAlias extends SpeciesAlias {
 	UnknownAlias() {
 	}
 
-	public UnknownAlias(Unknown degraded) {
-		super(degraded);
-	}
-
 	public UnknownAlias(UnknownAlias original) {
 		super(original);
 	}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
index 2c8deaf5f4..29676b3210 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
@@ -10,10 +10,8 @@ import org.apache.log4j.Appender;
 import lcsb.mapviewer.common.EventStorageLoggerAppender;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.OverviewImage;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
@@ -24,7 +22,6 @@ import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This interface defines functionality that the model container class should
@@ -342,7 +339,7 @@ public interface Model {
 	 * @return collection of species aliases
 	 */
 	Collection<SpeciesAlias> getNotComplexSpeciesAliases();
-	
+
 	List<SpeciesAlias> getSpeciesAliases();
 
 	/**
@@ -368,7 +365,7 @@ public interface Model {
 	 * @return list of elements
 	 */
 	Set<AnnotatedObject> getElementsByAnnotation(MiriamData miriamData);
-	
+
 	List<Alias> getAliasByName(String name);
 
 	/**
@@ -660,7 +657,7 @@ public interface Model {
 
 	/**
 	 * Return list od all {@link AnnotatedObject} in the map. This includes all
-	 * {@link Reaction reactions} and {@link Element elements}.
+	 * {@link Reaction reactions} and {@link Alias elements}.
 	 * 
 	 * @return list od all {@link AnnotatedObject} in the map
 	 */
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java
index 0c47df44c7..7eba1e40b5 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java
@@ -14,13 +14,8 @@ import lcsb.mapviewer.common.comparator.BooleanComparator;
 import lcsb.mapviewer.common.comparator.DoubleComparator;
 import lcsb.mapviewer.common.comparator.IntegerComparator;
 import lcsb.mapviewer.common.comparator.StringComparator;
-import lcsb.mapviewer.common.exception.InvalidClassException;
-import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.ElementComparator;
 import lcsb.mapviewer.model.map.OverviewImage;
 import lcsb.mapviewer.model.map.OverviewImageComparator;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSetComparator;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.LayoutComparator;
@@ -30,7 +25,6 @@ import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.layout.graphics.LayerComparator;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.ReactionComparator;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * Comparator for {@link Model} class.
@@ -266,71 +260,6 @@ public class ModelComparator implements Comparator<Model> {
 		return 0;
 	}
 
-	/**
-	 * Compares two sets of elements.
-	 * 
-	 * @param elements
-	 *          first set of elements
-	 * @param elements2
-	 *          second set of elements
-	 * @return if sets are equal then returns 0. If they are different then -1/1
-	 *         is returned.
-	 */
-	private int compareElements(Set<Element> elements, Set<Element> elements2) {
-		ElementComparator comparator = new ElementComparator(epsilon);
-
-		Map<String, Element> map = new HashMap<String, Element>();
-		Map<String, Element> map2 = new HashMap<String, Element>();
-		for (Element element : elements) {
-			if (element instanceof Species) {
-				map.put(((Species) element).getElementId(), element);
-			} else if (element instanceof Compartment) {
-				map.put(((Compartment) element).getElementId(), element);
-			} else {
-				throw new InvalidClassException("Unknown class type...");
-			}
-		}
-
-		for (Element element : elements2) {
-			if (element instanceof Species) {
-				map2.put(((Species) element).getElementId(), element);
-			} else if (element instanceof Compartment) {
-				map2.put(((Compartment) element).getElementId(), element);
-			} else {
-				throw new InvalidClassException("Unknown class type...");
-			}
-		}
-
-		for (Element element : elements) {
-			String id = "";
-			if (element instanceof Species) {
-				id = ((Species) element).getElementId();
-			} else if (element instanceof Compartment) {
-				id = ((Compartment) element).getElementId();
-			}
-			int status = comparator.compare(element, map2.get(id));
-			if (status != 0) {
-				logger.debug("Element with id " + id + " (" + element.getClass() + ") different");
-				return status;
-			}
-		}
-
-		for (Element element : elements2) {
-			String id = "";
-			if (element instanceof Species) {
-				id = ((Species) element).getElementId();
-			} else if (element instanceof Compartment) {
-				id = ((Compartment) element).getElementId();
-			}
-			int status = comparator.compare(element, map.get(id));
-			if (status != 0) {
-				logger.debug("Element with id " + id + "(" + element.getClass() + ") different");
-				return status;
-			}
-		}
-		return 0;
-	}
-
 	/**
 	 * Compares two sets of layers.
 	 * 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java
index 21a88ba3d0..6041b05312 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java
@@ -21,9 +21,12 @@ import javax.persistence.Table;
 import javax.persistence.Transient;
 import javax.xml.bind.annotation.XmlTransient;
 
+import org.apache.log4j.Logger;
+import org.hibernate.annotations.Cascade;
+import org.hibernate.annotations.CascadeType;
+
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.OverviewImage;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.layout.Layout;
@@ -33,10 +36,6 @@ import lcsb.mapviewer.model.map.layout.alias.BlockDiagram;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 
-import org.apache.log4j.Logger;
-import org.hibernate.annotations.Cascade;
-import org.hibernate.annotations.CascadeType;
-
 /**
  * Representation of the model data. It contains all information about single
  * map:
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
index 27c547eb3d..b04c10636f 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
@@ -17,25 +17,20 @@ import lcsb.mapviewer.common.EventStorageLoggerAppender;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.OverviewImage;
 import lcsb.mapviewer.model.map.OverviewImageLink;
 import lcsb.mapviewer.model.map.OverviewLink;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AliasGroup;
-import lcsb.mapviewer.model.map.layout.alias.ArtifitialCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.BlockDiagram;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This class implemets {@link Model} interface. It's is very simple
@@ -50,35 +45,35 @@ public class ModelFullIndexed implements Model {
 	/**
 	 * Default class logger.
 	 */
-	private static Logger												logger													 = Logger.getLogger(ModelFullIndexed.class);
+	private static Logger					 logger								= Logger.getLogger(ModelFullIndexed.class);
 
 	/**
 	 * Object that map {@link Alias#aliasId alias identifier} into {@link Alias}.
 	 */
-	private Map<String, Alias>									aliasByAliasId									 = new HashMap<String, Alias>();
+	private Map<String, Alias>		 aliasByAliasId				= new HashMap<String, Alias>();
 
 	/**
 	 * Object that map {@link Alias#id alias database identifier} into
 	 * {@link Alias}.
 	 */
-	private Map<Integer, Alias>									aliasByDbId											 = new HashMap<Integer, Alias>();
+	private Map<Integer, Alias>		 aliasByDbId					= new HashMap<Integer, Alias>();
 
 	/**
 	 * Object that map {@link Reaction#idReaction reaction identifier} into
 	 * {@link Reaction}.
 	 */
-	private Map<String, Reaction>								reactionByReactionId						 = new HashMap<String, Reaction>();
+	private Map<String, Reaction>	 reactionByReactionId	= new HashMap<String, Reaction>();
 
 	/**
 	 * Object that map {@link Reaction#id reaction database identifier} into
 	 * {@link Reaction}.
 	 */
-	private Map<Integer, Reaction>							reactionByDbId									 = new HashMap<Integer, Reaction>();
+	private Map<Integer, Reaction> reactionByDbId				= new HashMap<Integer, Reaction>();
 
 	/**
 	 * {@link ModelData} object containing "raw" data about the model.
 	 */
-	private ModelData														modelData												 = null;
+	private ModelData							 modelData						= null;
 
 	/**
 	 * Default constructor.
@@ -471,7 +466,7 @@ public class ModelFullIndexed implements Model {
 			CompartmentAlias ca = alias.getCompartmentAlias();
 			ca.removeAlias(alias);
 		}
-		
+
 		if (alias instanceof SpeciesAlias) {
 			SpeciesAlias al = (SpeciesAlias) alias;
 			if (al.getComplexAlias() != null) {
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Catalysis.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Catalysis.java
index e5060d5914..616e6fa843 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Catalysis.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Catalysis.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 
@@ -35,8 +34,6 @@ public class Catalysis extends Modifier {
 	 * 
 	 * @param alias
 	 *          alias object to which this modifiar is assigned
-	 * @param element
-	 *          element to which this modifier is assigned
 	 */
 	public Catalysis(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Inhibition.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Inhibition.java
index d70b8c5083..d6e36305cc 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Inhibition.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Inhibition.java
@@ -34,8 +34,6 @@ public class Inhibition extends Modifier {
 	 * 
 	 * @param alias
 	 *          alias object to which this modifiar is assigned
-	 * @param element
-	 *          element to which this modifier is assigned
 	 */
 	public Inhibition(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Modulation.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Modulation.java
index f3f6f141c5..7a5d19d33a 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Modulation.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Modulation.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 
@@ -21,7 +20,7 @@ public class Modulation extends Modifier {
 	/**
 	 * 
 	 */
-	private static final long	serialVersionUID	= 1L;
+	private static final long serialVersionUID = 1L;
 
 	/**
 	 * Default constructor.
@@ -35,8 +34,6 @@ public class Modulation extends Modifier {
 	 * 
 	 * @param alias
 	 *          alias object to which this modifiar is assigned
-	 * @param element
-	 *          element to which this modifier is assigned
 	 */
 	public Modulation(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulation.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulation.java
index 28ae11af87..187bc27cb0 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulation.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulation.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 
@@ -36,8 +35,6 @@ public class PhysicalStimulation extends Modifier {
 	 * 
 	 * @param alias
 	 *          alias object to which this modifiar is assigned
-	 * @param element
-	 *          element to which this modifier is assigned
 	 */
 	public PhysicalStimulation(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Trigger.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Trigger.java
index 9739ea7983..877a6d7147 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Trigger.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Trigger.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 
@@ -21,7 +20,7 @@ public class Trigger extends Modifier {
 	/**
 	 * 
 	 */
-	private static final long	serialVersionUID	= 1L;
+	private static final long serialVersionUID = 1L;
 
 	/**
 	 * Default constructor.
@@ -35,8 +34,6 @@ public class Trigger extends Modifier {
 	 * 
 	 * @param alias
 	 *          alias object to which this modifiar is assigned
-	 * @param element
-	 *          element to which this modifier is assigned
 	 */
 	public Trigger(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownCatalysis.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownCatalysis.java
index c57d25336d..3e2b0d8fb4 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownCatalysis.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownCatalysis.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 
@@ -36,8 +35,6 @@ public class UnknownCatalysis extends Modifier {
 	 * 
 	 * @param alias
 	 *          alias object to which this modifiar is assigned
-	 * @param element
-	 *          element to which this modifier is assigned
 	 */
 	public UnknownCatalysis(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownInhibition.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownInhibition.java
index 112a10b019..511ebf6877 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownInhibition.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownInhibition.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 
@@ -36,8 +35,6 @@ public class UnknownInhibition extends Modifier {
 	 * 
 	 * @param alias
 	 *          alias object to which this modifiar is assigned
-	 * @param element
-	 *          element to which this modifier is assigned
 	 */
 	public UnknownInhibition(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Modifier.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Modifier.java
index a9c922226a..f61570b290 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Modifier.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Modifier.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 
 /**
@@ -31,15 +30,13 @@ public class Modifier extends ReactionNode {
 	}
 
 	/**
-	 * Constructor that creates modifier for given {@link SpeciesAlias} and
-	 * {@link Element}. These elements reference to the objects in the
+	 * Constructor that creates modifier for given {@link SpeciesAlias}. These
+	 * elements reference to the objects in the
 	 * {@link lcsb.mapviewer.model.map.model.db.model.map.Model Model} that
 	 * represents this modifier.
 	 * 
 	 * @param alias
 	 *          alias that represent this modifier
-	 * @param element
-	 *          element that represent this modifier
 	 */
 	public Modifier(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java
index df3298b930..2e7c9dbbd1 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 
 /**
@@ -30,15 +29,13 @@ public class Product extends ReactionNode {
 	}
 
 	/**
-	 * Constructor that creates product for given {@link SpeciesAlias} and
-	 * {@link Element}. These elements reference to the objects in the
+	 * Constructor that creates product for given {@link SpeciesAlias}. These
+	 * elements reference to the objects in the
 	 * {@link lcsb.mapviewer.model.map.model.db.model.map.Model Model} that
 	 * represents this product.
 	 * 
 	 * @param alias
 	 *          alias that represent this product
-	 * @param element
-	 *          element that represent this product
 	 */
 	public Product(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java
index dcbe8da7e1..f553d769f5 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 
 /**
@@ -30,15 +29,13 @@ public class Reactant extends ReactionNode {
 	}
 
 	/**
-	 * Constructor that creates reactant for a given {@link SpeciesAlias} and
-	 * {@link Element}. These elements reference to the objects in the
+	 * Constructor that creates reactant for a given {@link SpeciesAlias}. These
+	 * elements reference to the objects in the
 	 * {@link lcsb.mapviewer.model.map.model.db.model.map.Model Model} that
 	 * represents this reactant.
 	 * 
 	 * @param alias
 	 *          alias that represent this reactant
-	 * @param element
-	 *          element that represent this reactant
 	 */
 	public Reactant(SpeciesAlias alias) {
 		super(alias);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reaction.java
index 0f3de039cc..16fa2d5e4c 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reaction.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reaction.java
@@ -39,7 +39,6 @@ import org.hibernate.annotations.IndexColumn;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.common.geometry.LineTransformation;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
@@ -517,7 +516,7 @@ public class Reaction implements AnnotatedObject {
 	/**
 	 * Check if one of the nodes reference to the element.
 	 * 
-	 * @param element
+	 * @param alias
 	 *          element to be checked
 	 * @return <code>true</code> if element is part of the reaction,
 	 *         <code>false</code> otherwise
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionNode.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionNode.java
index 4902211d6f..23643d2030 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionNode.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionNode.java
@@ -4,7 +4,6 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 import javax.persistence.ManyToOne;
 
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 
 /**
@@ -13,9 +12,9 @@ import lcsb.mapviewer.model.map.layout.alias.Alias;
  * {@link #alias} define which element on the map correspond to this node. There
  * are three known subclasses:
  * <ul>
- * <li> {@link Reactant} - input of the reaction,</li>
- * <li> {@link Product} - output of the reaction,</li>
- * <li> {@link Modifier} - some modifier of the reaction.</li>
+ * <li>{@link Reactant} - input of the reaction,</li>
+ * <li>{@link Product} - output of the reaction,</li>
+ * <li>{@link Modifier} - some modifier of the reaction.</li>
  * </ul>
  * 
  * 
@@ -29,13 +28,13 @@ public abstract class ReactionNode extends AbstractNode {
 	/**
 	 * 
 	 */
-	private static final long	serialVersionUID	= 1L;
+	private static final long	serialVersionUID = 1L;
 
 	/**
 	 * {@link SpecisAlias} that represents this node in the model.
 	 */
 	@ManyToOne
-	private Alias	alias;
+	private Alias							alias;
 
 	/**
 	 * Default constructor.
@@ -61,8 +60,6 @@ public abstract class ReactionNode extends AbstractNode {
 	 * 
 	 * @param alias
 	 *          {@link Alias} to which this node refer to
-	 * @param element
-	 *          {@link Element} to which this node refer to
 	 */
 	public ReactionNode(Alias alias) {
 		this.alias = alias;
@@ -77,7 +74,8 @@ public abstract class ReactionNode extends AbstractNode {
 	}
 
 	/**
-	 * @param alias the alias to set
+	 * @param alias
+	 *          the alias to set
 	 * @see #alias
 	 */
 	public void setAlias(Alias alias) {
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionNodeComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionNodeComparator.java
index 25dd159e5b..1efc5fba81 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionNodeComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionNodeComparator.java
@@ -5,7 +5,6 @@ import java.util.Comparator;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.model.map.ElementComparator;
 import lcsb.mapviewer.model.map.layout.alias.AliasComparator;
 
 /**
@@ -78,7 +77,6 @@ public class ReactionNodeComparator implements Comparator<ReactionNode> {
 	 */
 	private int internalCompare(ReactionNode arg0, ReactionNode arg1) {
 		AbstractNodeComparator anComparator = new AbstractNodeComparator(epsilon);
-		ElementComparator elementComparator = new ElementComparator(epsilon);
 		AliasComparator aliasComparator = new AliasComparator(epsilon);
 
 		int result = anComparator.internalCompare(arg0, arg1);
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Phenotype.java b/model/src/main/java/lcsb/mapviewer/model/map/species/Phenotype.java
deleted file mode 100644
index ccac5bd6f0..0000000000
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Phenotype.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package lcsb.mapviewer.model.map.species;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.DiscriminatorValue;
-import javax.persistence.Entity;
-import javax.persistence.OneToMany;
-
-import org.hibernate.annotations.Cascade;
-import org.hibernate.annotations.CascadeType;
-import org.hibernate.annotations.LazyCollection;
-import org.hibernate.annotations.LazyCollectionOption;
-
-import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.layout.alias.PhenotypeAlias;
-import lcsb.mapviewer.model.map.species.fields.AssociatedElement;
-
-/**
- * Class representing phenotype in the model.
- * 
- * @author Piotr Gawron
- * 
- */
-@Entity
-@DiscriminatorValue("Phenotype")
-public class Phenotype extends Species<PhenotypeAlias> {
-
-	/**
-	 * 
-	 */
-	private static final long				serialVersionUID	 = 1L;
-
-	/**
-	 * List of associated with this phenotape elements.
-	 */
-	@Cascade({ CascadeType.ALL })
-	@OneToMany(mappedBy = "phenotype", orphanRemoval = true)
-	@LazyCollection(LazyCollectionOption.FALSE)
-	private List<AssociatedElement>	associatedElements = new ArrayList<AssociatedElement>();
-
-	/**
-	 * Constructor that initializes phenotype with the data passed in the
-	 * argument.
-	 * 
-	 * @param species
-	 *          original species used for data initialization
-	 */
-	public Phenotype(Species species) {
-		super(species);
-		if (species instanceof Phenotype) {
-			Phenotype phenotype = (Phenotype) species;
-			for (AssociatedElement ae : phenotype.getAssociatedElements()) {
-				addAssociatedElement(new AssociatedElement(ae));
-			}
-		}
-	}
-
-	/**
-	 * Default constructor.
-	 */
-	public Phenotype() {
-	}
-
-	@Override
-	public Phenotype copy() {
-		if (this.getClass() == Phenotype.class) {
-			return new Phenotype(this);
-		} else {
-			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
-		}
-	}
-
-	@Override
-	public String getStringType() {
-		return "Phenotype";
-	}
-
-	/**
-	 * Adds associated element to the phenotype.
-	 * 
-	 * @param ae
-	 *          associated element to add
-	 */
-	public void addAssociatedElement(AssociatedElement ae) {
-		associatedElements.add(ae);
-		ae.setPhenotype(this);
-	}
-
-	/**
-	 * @return the associatedElements
-	 * @see #associatedElements
-	 */
-	public List<AssociatedElement> getAssociatedElements() {
-		return associatedElements;
-	}
-
-	/**
-	 * @param associatedElements
-	 *          the associatedElements to set
-	 * @see #associatedElements
-	 */
-	public void setAssociatedElements(List<AssociatedElement> associatedElements) {
-		this.associatedElements = associatedElements;
-	}
-
-	@Override
-	public PhenotypeAlias createAlias(String aliasId) {
-		PhenotypeAlias result = new PhenotypeAlias(aliasId);
-		if (associatedElements.size() > 0) {
-			throw new NotImplementedException();
-		}
-		super.setAliasFields(result);
-		return result;
-	}
-
-}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/AssociatedElement.java b/model/src/main/java/lcsb/mapviewer/model/map/species/fields/AssociatedElement.java
deleted file mode 100644
index 72065eeb78..0000000000
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/AssociatedElement.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.Phenotype;
-
-import org.hibernate.annotations.Cascade;
-import org.hibernate.annotations.CascadeType;
-
-/**
- * This class defines object that is associated with the phenotype. By
- * definition phenotype can contain set of elements with whom there is a kind of
- * association. This association are taken from different databases (or are
- * curated by human).
- * 
- * @author Piotr Gawron
- * 
- */
-@Entity
-@Table(name = "associated_phenotype_element_table")
-public class AssociatedElement implements Serializable {
-	
-	/**
-	 * 
-	 */
-	private static final long	serialVersionUID	= 1L;
-
-	/**
-	 * Unique identifier in the database.
-	 */
-	@Id
-	@GeneratedValue(strategy = GenerationType.IDENTITY)
-	@Column(name = "idDb", unique = true, nullable = false)
-	private int						id;
-
-	/**
-	 * Where this association comes from.
-	 */
-	private MiriamType	source	= MiriamType.UNKNOWN;
-
-	/**
-	 * Description of this association in the form of Miriam object.
-	 */
-	@Cascade({ CascadeType.ALL })
-	@OneToOne
-	private MiriamData		data;
-
-	/**
-	 * Parent Phenotype object that contains this association.
-	 */
-	@ManyToOne
-	private Phenotype			phenotype;
-
-	/**
-	 * Default constructor.
-	 */
-	public AssociatedElement() {
-	}
-
-	/**
-	 * Constructor that initialize the object with the data given in parameter.
-	 * 
-	 * @param ae
-	 *          object from which the data is initialized
-	 */
-	public AssociatedElement(AssociatedElement ae) {
-		this.source = ae.source;
-		this.data = new MiriamData(ae.getData());
-	}
-
-	/**
-	 * @return the id
-	 * @see #id
-	 */
-	public int getId() {
-		return id;
-	}
-
-	/**
-	 * @param id
-	 *          the id to set
-	 * @see #id
-	 */
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	/**
-	 * @return the source
-	 * @see #source
-	 */
-	public MiriamType getSource() {
-		return source;
-	}
-
-	/**
-	 * @param source
-	 *          the source to set
-	 * @see #source
-	 */
-	public void setSource(MiriamType source) {
-		this.source = source;
-	}
-
-	/**
-	 * @return the data
-	 * @see #data
-	 */
-	public MiriamData getData() {
-		return data;
-	}
-
-	/**
-	 * @param data
-	 *          the data to set
-	 * @see #data
-	 */
-	public void setData(MiriamData data) {
-		this.data = data;
-	}
-
-	/**
-	 * @return the phenotype
-	 * @see #phenotype
-	 */
-	public Phenotype getPhenotype() {
-		return phenotype;
-	}
-
-	/**
-	 * @param phenotype
-	 *          the phenotype to set
-	 * @see #phenotype
-	 */
-	public void setPhenotype(Phenotype phenotype) {
-		this.phenotype = phenotype;
-	}
-
-}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementComparator.java
deleted file mode 100644
index 31dabfe521..0000000000
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementComparator.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import java.util.Comparator;
-
-import lcsb.mapviewer.common.comparator.StringComparator;
-import lcsb.mapviewer.common.exception.InvalidClassException;
-
-import org.apache.log4j.Logger;
-
-/**
- * This class implements comparator interface for AssociatedElement. It compares
- * the content, but skip database identifier and parent object reference.
- * 
- * @author Piotr Gawron
- * 
- */
-public class AssociatedElementComparator implements Comparator<AssociatedElement> {
-	/**
-	 * Default class logger.
-	 */
-	private Logger logger = Logger.getLogger(AssociatedElementComparator.class);
-
-	@Override
-	public int compare(AssociatedElement arg0, AssociatedElement arg1) {
-		if (arg0 == null) {
-			if (arg1 == null) {
-				return 0;
-			} else {
-				return 1;
-			}
-		} else if (arg1 == null) {
-			return -1;
-		}
-
-		if (arg0.getClass().equals(arg1.getClass())) {
-			if (arg0.getClass().equals(AssociatedElement.class)) {
-				return internalCompare(arg0, arg1);
-			} else {
-				throw new InvalidClassException("Don't know how to compare classes: " + arg0.getClass());
-			}
-		} else {
-			return -1;
-		}
-	}
-
-	/**
-	 * This method compares only the fields that are defined in AssociatedElement
-	 * class in inheritence tree.
-	 * 
-	 * @param arg0
-	 *          first object to compare
-	 * @param arg1
-	 *          second object to compare
-	 * @return if all fields are qual then returns 0. If they are different then
-	 *         -1/1 is returned.
-	 */
-	private int internalCompare(AssociatedElement arg0, AssociatedElement arg1) {
-		if (arg0.getSource() != arg1.getSource()) {
-			logger.debug("Source different: \"" + arg0.getSource() + "\", \"" + arg1.getSource() + "\"");
-			if (arg0.getSource() == null) {
-				return -1;
-			} else {
-				return arg0.getSource().compareTo(arg1.getSource());
-			}
-		}
-
-		if (arg0.getData() == null) {
-			if (arg1.getData() == null) {
-				return 0;
-			} else {
-				logger.debug("Miriam data different");
-				return 1;
-			}
-		} else {
-			if (arg1.getData() == null) {
-				logger.debug("Miriam data different");
-				return -1;
-			} else {
-				String hash1 = arg0.getData().getRelationType() + "  " + arg0.getData().getDataType() + "  " + arg0.getData().getResource();
-				String hash2 = arg1.getData().getRelationType() + "  " + arg1.getData().getDataType() + "  " + arg1.getData().getResource();
-				StringComparator stringComparator = new StringComparator();
-				if (stringComparator.compare(hash1, hash2) != 0) {
-					logger.debug("Miriam data different: \n" + hash1 + "\n" + hash2);
-					return stringComparator.compare(hash1, hash2);
-				}
-			}
-		}
-		return 0;
-	}
-}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/package-info.java b/model/src/main/java/lcsb/mapviewer/model/map/species/fields/package-info.java
deleted file mode 100644
index 9fc9c50361..0000000000
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/fields/package-info.java
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Provides data structure for complicated
- * {@link lcsb.mapviewer.model.map.species.Species Species} implementation.
- * These structures contain some additional structural information about
- * elements.
- */
-package lcsb.mapviewer.model.map.species.fields;
-
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/package-info.java b/model/src/main/java/lcsb/mapviewer/model/map/species/package-info.java
deleted file mode 100644
index e67728b252..0000000000
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/package-info.java
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * Provides data structure for species on the map. The generic class from which
- * all element classes inherit data is
- * {@link lcsb.mapviewer.db.model.map.Element Element}. However, for species
- * there is another class that inherits from this class:
- * {@link lcsb.mapviewer.model.map.species.Species}. The package also
- * contains comparators for these elements that compare the data of the
- * structures, but ignore database-related information (like identifiers).
- */
-package lcsb.mapviewer.model.map.species;
-
diff --git a/model/src/main/java/lcsb/mapviewer/modelutils/map/ElementUtils.java b/model/src/main/java/lcsb/mapviewer/modelutils/map/ElementUtils.java
index 61e1ead208..0ed029d9d2 100644
--- a/model/src/main/java/lcsb/mapviewer/modelutils/map/ElementUtils.java
+++ b/model/src/main/java/lcsb/mapviewer/modelutils/map/ElementUtils.java
@@ -13,7 +13,6 @@ import org.reflections.Reflections;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 
@@ -33,9 +32,9 @@ public final class ElementUtils {
 
 	/**
 	 * Map between class names (used as user input) and implementation of
-	 * {@link Element} class.
+	 * {@link Alias} class.
 	 */
-	private static Map<String, Class<? extends Element>>	elementClasses			= null;
+	private static Map<String, Class<? extends Alias>>	elementClasses			= null;
 
 	/**
 	 * Map between class names (used as user input) and implementation of
@@ -144,14 +143,14 @@ public final class ElementUtils {
 	}
 
 	/**
-	 * Returns list of classes that extends {@link Element} class, but don't have
+	 * Returns list of classes that extends {@link Alias} class, but don't have
 	 * children (leaves in the hierarchy tree).
 	 * 
-	 * @return list of classes that extends {@link Element} class, but don't have
+	 * @return list of classes that extends {@link Alias} class, but don't have
 	 *         children (leaves in the hierarchy tree)
 	 */
-	public List<Class<? extends Element>> getAvailableElementSubclasses() {
-		List<Class<? extends Element>> result = new ArrayList<Class<? extends Element>>();
+	public List<Class<? extends Alias>> getAvailableElementSubclasses() {
+		List<Class<? extends Alias>> result = new ArrayList<Class<? extends Alias>>();
 		if (elementClasses == null) {
 			refreshClasses();
 		}
@@ -161,18 +160,18 @@ public final class ElementUtils {
 	}
 
 	/**
-	 * Refresh list of known implementation of {@link Element} class.
+	 * Refresh list of known implementation of {@link Alias} class.
 	 */
 	protected void refreshClasses() {
-		List<Class<? extends Element>> tmp = new ArrayList<Class<? extends Element>>();
+		List<Class<? extends Alias>> tmp = new ArrayList<>();
 
 		Reflections reflections = new Reflections("lcsb.mapviewer.model.map");
-		elementClasses = new HashMap<String, Class<? extends Element>>();
-		Set<Class<? extends Element>> classes = reflections.getSubTypesOf(Element.class);
+		elementClasses = new HashMap<String, Class<? extends Alias>>();
+		Set<Class<? extends Alias>> classes = reflections.getSubTypesOf(Alias.class);
 
 		Set<Class<?>> toRemove = new HashSet<Class<?>>();
 
-		for (Class<? extends Element> class1 : classes) {
+		for (Class<? extends Alias> class1 : classes) {
 			if (class1.isAnonymousClass() || class1.isMemberClass() || class1.isLocalClass()) {
 				continue;
 			}
@@ -182,7 +181,7 @@ public final class ElementUtils {
 		for (Class<?> clazz : toRemove) {
 			tmp.remove(clazz);
 		}
-		for (Class<? extends Element> class1 : tmp) {
+		for (Class<? extends Alias> class1 : tmp) {
 			elementClasses.put(class1.getSimpleName(), class1);
 		}
 
@@ -249,7 +248,7 @@ public final class ElementUtils {
 	 *          the elementClasses to set
 	 * @see #elementClasses
 	 */
-	protected static void setElementClasses(Map<String, Class<? extends Element>> elementClasses) {
+	protected static void setElementClasses(Map<String, Class<? extends Alias>> elementClasses) {
 		ElementUtils.elementClasses = elementClasses;
 	}
 
@@ -262,8 +261,4 @@ public final class ElementUtils {
 		ElementUtils.reactionClasses = reactionClasses;
 	}
 
-	public String getElementTag(Element element) {
-		return "[" + element.getClass().getSimpleName() + " " + element.getElementId() + "]\t";
-	}
-
 }
diff --git a/model/src/main/java/lcsb/mapviewer/modelutils/map/RequireAnnotationMap.java b/model/src/main/java/lcsb/mapviewer/modelutils/map/RequireAnnotationMap.java
index f1ec89c13e..14364ccac3 100644
--- a/model/src/main/java/lcsb/mapviewer/modelutils/map/RequireAnnotationMap.java
+++ b/model/src/main/java/lcsb/mapviewer/modelutils/map/RequireAnnotationMap.java
@@ -10,14 +10,6 @@ import lcsb.mapviewer.model.map.layout.alias.PhenotypeAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.Chemical;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
 
 /**
  * List of {@link AnnotatedObject} that must be annototed with at least one
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/AllMapTests.java b/model/src/test/java/lcsb/mapviewer/model/map/AllMapTests.java
index f0d48eeb97..d56d039a13 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/AllMapTests.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/AllMapTests.java
@@ -4,30 +4,24 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
-import lcsb.mapviewer.model.map.agregator.AllAgregatorTests;
 import lcsb.mapviewer.model.map.graph.AllGraphTests;
 import lcsb.mapviewer.model.map.layout.AllLayoutTests;
 import lcsb.mapviewer.model.map.layout.graphics.AllGraphicsTests;
 import lcsb.mapviewer.model.map.model.AllModelTests;
 import lcsb.mapviewer.model.map.modifier.AllModifierTests;
 import lcsb.mapviewer.model.map.reaction.AllReactionTests;
-import lcsb.mapviewer.model.map.species.AllSpeciesTests;
 import lcsb.mapviewer.model.map.statistics.AllStatisticsTests;
 
 @RunWith(Suite.class)
 @SuiteClasses({ AliasInFewParentsExceptionTest.class, //
-		AllAgregatorTests.class, //
 		AllGraphTests.class, //
 		AllGraphicsTests.class, //
 		AllLayoutTests.class, //
 		AllModelTests.class, //
 		AllModifierTests.class, //
 		AllReactionTests.class, //
-		AllSpeciesTests.class, //
 		AllStatisticsTests.class, //
 		CommentTest.class, //
-		ElementComparatorTest.class, //
-		ElementTest.class, //
 		InconsistentModelExceptionTest.class, //
 		LayoutComparatorTest.class, //
 		MiriamDataTest.class, //
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/MiriamDataTest.java b/model/src/test/java/lcsb/mapviewer/model/map/MiriamDataTest.java
index e2da6fcea2..c17ab9a40b 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/MiriamDataTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/MiriamDataTest.java
@@ -13,7 +13,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class MiriamDataTest {
 
@@ -76,7 +75,7 @@ public class MiriamDataTest {
 			MiriamData md = new MiriamData();
 			md.setResource(null);
 			assertNull(md.getResource());
-			
+
 			md.setId(id);
 			assertEquals(id, md.getId());
 
@@ -90,7 +89,7 @@ public class MiriamDataTest {
 	public void testToString() {
 		try {
 			assertNotNull(new MiriamData().toString());
-			assertNotNull(new MiriamData(MiriamType.CAS,"a").toString());
+			assertNotNull(new MiriamData(MiriamType.CAS, "a").toString());
 
 		} catch (Exception e) {
 			e.printStackTrace();
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/agregator/AllAgregatorTests.java b/model/src/test/java/lcsb/mapviewer/model/map/agregator/AllAgregatorTests.java
deleted file mode 100644
index e344d0983f..0000000000
--- a/model/src/test/java/lcsb/mapviewer/model/map/agregator/AllAgregatorTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package lcsb.mapviewer.model.map.agregator;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-@RunWith(Suite.class)
-@SuiteClasses({ CompartmentComparatorTest.class,//
-		CompartmentTest.class,//
-})
-public class AllAgregatorTests {
-
-}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/graph/DataMiningTest.java b/model/src/test/java/lcsb/mapviewer/model/map/graph/DataMiningTest.java
index c93c0dd1ef..bd6ed6c44c 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/graph/DataMiningTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/graph/DataMiningTest.java
@@ -1,93 +1,94 @@
-package lcsb.mapviewer.model.map.graph;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.SerializationUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.species.Species;
-
-public class DataMiningTest {
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testSerialization() {
-		try {
-			SerializationUtils.serialize(new DataMining());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetters() {
-		try {
-			DataMining dm = new DataMining();
-			String description = "xdg";
-			Element element = new Species();
-			Integer id = 61;
-			List<MiriamData> references = new ArrayList<>();
-			List<MiriamData> suggestedConnections = new ArrayList<>();
-			DataMiningType type = DataMiningType.STRUCTURE_ANALYSIS;
-
-			dm.setDescription(description);
-			assertEquals(description, dm.getDescription());
-			dm.setElement(element);
-			assertEquals(element, dm.getElement());
-			dm.setId(id);
-			assertEquals(id, dm.getId());
-			dm.setReferences(references);
-			assertEquals(references, dm.getReferences());
-			dm.setSuggestedConnections(suggestedConnections);
-			assertEquals(suggestedConnections, dm.getSuggestedConnections());
-			dm.setType(type);
-			assertEquals(type, dm.getType());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testAddReference() {
-		try {
-			DataMining dm = new DataMining();
-			List<MiriamData> references = new ArrayList<>();
-			references.add(new MiriamData());
-			references.add(new MiriamData());
-			dm.addReferences(references);
-			assertEquals(2, dm.getReferences().size());
-			dm.addReference(new MiriamData());
-			assertEquals(3, dm.getReferences().size());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-	@Test
-	public void testAddSuggestedConnections() {
-		try {
-			DataMining dm = new DataMining();
-			dm.addSuggestedConnection(new MiriamData());
-			assertEquals(1, dm.getSuggestedConnections().size());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-}
+package lcsb.mapviewer.model.map.graph;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.SerializationUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
+
+public class DataMiningTest {
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testSerialization() {
+		try {
+			SerializationUtils.serialize(new DataMining());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetters() {
+		try {
+			DataMining dm = new DataMining();
+			String description = "xdg";
+			Alias element = new GenericProteinAlias("id");
+			Integer id = 61;
+			List<MiriamData> references = new ArrayList<>();
+			List<MiriamData> suggestedConnections = new ArrayList<>();
+			DataMiningType type = DataMiningType.STRUCTURE_ANALYSIS;
+
+			dm.setDescription(description);
+			assertEquals(description, dm.getDescription());
+			dm.setElement(element);
+			assertEquals(element, dm.getElement());
+			dm.setId(id);
+			assertEquals(id, dm.getId());
+			dm.setReferences(references);
+			assertEquals(references, dm.getReferences());
+			dm.setSuggestedConnections(suggestedConnections);
+			assertEquals(suggestedConnections, dm.getSuggestedConnections());
+			dm.setType(type);
+			assertEquals(type, dm.getType());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testAddReference() {
+		try {
+			DataMining dm = new DataMining();
+			List<MiriamData> references = new ArrayList<>();
+			references.add(new MiriamData());
+			references.add(new MiriamData());
+			dm.addReferences(references);
+			assertEquals(2, dm.getReferences().size());
+			dm.addReference(new MiriamData());
+			assertEquals(3, dm.getReferences().size());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testAddSuggestedConnections() {
+		try {
+			DataMining dm = new DataMining();
+			dm.addSuggestedConnection(new MiriamData());
+			assertEquals(1, dm.getSuggestedConnections().size());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/ColorSchemaTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/ColorSchemaTest.java
index 7262b65932..b16bec7df7 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/ColorSchemaTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/ColorSchemaTest.java
@@ -14,8 +14,9 @@ import org.junit.Test;
 
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
+import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 
 public class ColorSchemaTest {
 
@@ -32,7 +33,7 @@ public class ColorSchemaTest {
 		try {
 			ColorSchema cs = new GenericColorSchema();
 			List<String> compartments = new ArrayList<>();
-			List<Class<? extends Species>> types = new ArrayList<>();
+			List<Class<? extends Alias>> types = new ArrayList<>();
 			String name = "S";
 			String generalIdentifier = "id";
 			List<Pair<MiriamType, String>> identifierColumns = new ArrayList<>();
@@ -148,7 +149,7 @@ public class ColorSchemaTest {
 			assertNotNull(cs.toString());
 			cs.setName("gene name");
 			cs.addCompartment("A");
-			cs.addType(Species.class);
+			cs.addType(SpeciesAlias.class);
 			cs.setValue(1.2);
 			cs.setColor(Color.BLACK);
 			cs.setGeneralIdentifier("a");
@@ -191,7 +192,7 @@ public class ColorSchemaTest {
 	public void testAddIdentifgierColumns() throws Exception {
 		try {
 			ColorSchema cs = new GenericColorSchema();
-			List<Pair<MiriamType,String>> compartments = new ArrayList<>();
+			List<Pair<MiriamType, String>> compartments = new ArrayList<>();
 			compartments.add(new Pair<MiriamType, String>(MiriamType.CAS, "x"));
 			cs.addIdentifierColumns(compartments);
 			assertEquals(1, cs.getIdentifierColumns().size());
@@ -205,9 +206,9 @@ public class ColorSchemaTest {
 	public void testAddTypes() throws Exception {
 		try {
 			ColorSchema cs = new GenericColorSchema();
-			List<Class<? extends Species>> compartments = new ArrayList<>();
-			compartments.add(Species.class);
-			compartments.add(Protein.class);
+			List<Class<? extends Alias>> compartments = new ArrayList<>();
+			compartments.add(SpeciesAlias.class);
+			compartments.add(ProteinAlias.class);
 			cs.addTypes(compartments);
 			assertEquals(2, cs.getTypes().size());
 		} catch (Exception e) {
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/AliasComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/AliasComparatorTest.java
index 10cc64c503..802c590322 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/AliasComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/AliasComparatorTest.java
@@ -11,16 +11,13 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import lcsb.mapviewer.common.exception.InvalidClassException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.model.AliasSubmodelConnection;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.model.SubmodelType;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class AliasComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/AliasGroupTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/AliasGroupTest.java
index 048cf4261e..d9502c7273 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/AliasGroupTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/AliasGroupTest.java
@@ -10,8 +10,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import lcsb.mapviewer.model.map.species.GenericProtein;
-
 public class AliasGroupTest {
 
 	@Before
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasComparatorTest.java
index b9acbc1fab..1cf0304bcf 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasComparatorTest.java
@@ -12,8 +12,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class CompartmentAliasComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasTest.java
index 2434709faa..6600e5b85a 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/CompartmentAliasTest.java
@@ -3,7 +3,6 @@ package lcsb.mapviewer.model.map.layout.alias;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -20,12 +19,8 @@ import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 
 public class CompartmentAliasTest {
 	Logger logger						 = Logger.getLogger(CompartmentAliasTest.class);
@@ -137,7 +132,7 @@ public class CompartmentAliasTest {
 			alias.setName("AS");
 
 			assertFalse(alias.containsIdenticalSpecies());
-			
+
 			SpeciesAlias sAlias = new GenericProteinAlias();
 			sAlias.setName("AS");
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ComplexAliasComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ComplexAliasComparatorTest.java
index 82996f5f7c..2577ab598d 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ComplexAliasComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ComplexAliasComparatorTest.java
@@ -12,9 +12,6 @@ import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class ComplexAliasComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ComplexAliasTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ComplexAliasTest.java
index 2bacb3a01b..2390121c6d 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ComplexAliasTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ComplexAliasTest.java
@@ -10,7 +10,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 
 public class ComplexAliasTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/ModificationStateTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ModificationStateTest.java
similarity index 81%
rename from model/src/test/java/lcsb/mapviewer/model/map/species/fields/ModificationStateTest.java
rename to model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ModificationStateTest.java
index 7e292cc131..d122a41327 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/ModificationStateTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/ModificationStateTest.java
@@ -1,38 +1,40 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ModificationStateTest {
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testValidValues() {
-		for (ModificationState type : ModificationState.values()) {
-			assertNotNull(type);
-
-			// for coverage tests
-			ModificationState.valueOf(type.toString());
-			assertNotNull(type.getFullName());
-			assertNotNull(type.getAbbreviation());
-		}
-	}
-
-	@Test
-	public void testGetByName() {
-		assertNull(ModificationState.getByName("Adasd"));
-		assertNotNull(ModificationState.getByName("protonated"));
-	}
-
-}
+package lcsb.mapviewer.model.map.layout.alias;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationState;
+
+public class ModificationStateTest {
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testValidValues() {
+		for (ModificationState type : ModificationState.values()) {
+			assertNotNull(type);
+
+			// for coverage tests
+			ModificationState.valueOf(type.toString());
+			assertNotNull(type.getFullName());
+			assertNotNull(type.getAbbreviation());
+		}
+	}
+
+	@Test
+	public void testGetByName() {
+		assertNull(ModificationState.getByName("Adasd"));
+		assertNotNull(ModificationState.getByName("protonated"));
+	}
+
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasComparatorTest.java
index 95a5881589..ffbafe9f43 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasComparatorTest.java
@@ -9,10 +9,9 @@ import java.awt.Color;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class SpeciesAliasComparatorTest {
 
@@ -47,22 +46,9 @@ public class SpeciesAliasComparatorTest {
 	@Test
 	public void testCompareInvalid() {
 		try {
-			class Tmp extends GenericProteinAlias {
-
-				public Tmp() {
-					super(null, null);
-				}
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}
-			;
-
-			Tmp alias1 = new Tmp();
-			Tmp alias2 = new Tmp();
-			comparator.compare(alias1, alias2);
+
+			SpeciesAlias alias = Mockito.mock(SpeciesAlias.class);
+			comparator.compare(alias, alias);
 			fail("Exception expected");
 
 		} catch (NotImplementedException e) {
@@ -75,7 +61,7 @@ public class SpeciesAliasComparatorTest {
 	private SpeciesAlias createSpeciesAlias() {
 		GenericProteinAlias result = new GenericProteinAlias();
 		result.setName("a");
-		
+
 		result.setAliasId("asd");
 		result.setX(12.0);
 		result.setY(123.0);
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasTest.java b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasTest.java
index 10ade68cb5..d2aa04e7f6 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/layout/alias/SpeciesAliasTest.java
@@ -1,18 +1,14 @@
 package lcsb.mapviewer.model.map.layout.alias;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.ReactionNode;
 
 public class SpeciesAliasTest {
@@ -29,7 +25,7 @@ public class SpeciesAliasTest {
 	public void testGetter() {
 		try {
 			SpeciesAlias alias = new SpeciesAlias() {
-				
+
 				@Override
 				public SpeciesAlias copy() {
 					return null;
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/AliasSubmodelConnectionComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/AliasSubmodelConnectionComparatorTest.java
index a8260e5706..3649aed846 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/AliasSubmodelConnectionComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/AliasSubmodelConnectionComparatorTest.java
@@ -9,15 +9,11 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
 
 public class AliasSubmodelConnectionComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java
index 0b23a9932f..c2076026bb 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java
@@ -11,14 +11,11 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import lcsb.mapviewer.common.exception.InvalidClassException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.OverviewImage;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.ArtifitialCompartmentAlias;
@@ -28,9 +25,6 @@ import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class ModelComparatorTest {
 	Logger					logger		 = Logger.getLogger(ModelComparatorTest.class);
@@ -151,10 +145,10 @@ public class ModelComparatorTest {
 			Model model1 = getModel();
 			Model model2 = getModel();
 
-			SpeciesAlias mockAlias =Mockito.mock(SpeciesAlias.class);
+			SpeciesAlias mockAlias = Mockito.mock(SpeciesAlias.class);
 			when(mockAlias.getAliasId()).thenReturn("1");
 			model1.addAlias(mockAlias);
-			
+
 			model2.addAlias(mockAlias);
 
 			try {
@@ -177,7 +171,6 @@ public class ModelComparatorTest {
 		}
 	}
 
-
 	@Test
 	public void testDifferent() throws Exception {
 		try {
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelDataTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelDataTest.java
index 9d768b0fa4..56c1808e30 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelDataTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelDataTest.java
@@ -18,7 +18,6 @@ import org.junit.Test;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.OverviewImage;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.layout.Layout;
@@ -27,7 +26,6 @@ import lcsb.mapviewer.model.map.layout.alias.BlockDiagram;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class ModelDataTest {
 
@@ -326,7 +324,6 @@ public class ModelDataTest {
 		try {
 			ModelData md = new ModelData();
 			Set<Alias> aliases = new HashSet<>();
-			Set<Element> elements = new HashSet<>();
 			List<Layout> layouts = new ArrayList<>();
 			Set<Layer> layers = new HashSet<>();
 			Set<Reaction> reactions = new HashSet<>();
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelFullIndexedTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelFullIndexedTest.java
index 14cba9e260..bcadff7289 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelFullIndexedTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelFullIndexedTest.java
@@ -25,12 +25,10 @@ import lcsb.mapviewer.common.EventStorageLoggerAppender;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.OverviewImage;
 import lcsb.mapviewer.model.map.OverviewImageLink;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
@@ -44,9 +42,6 @@ import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.model.user.User;
 
 public class ModelFullIndexedTest {
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelSubmodelConnectionComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelSubmodelConnectionComparatorTest.java
index 63ee6dfd8d..ad3ac46f5e 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelSubmodelConnectionComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelSubmodelConnectionComparatorTest.java
@@ -7,13 +7,11 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ModelSubmodelConnectionComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelTest.java
index 26065e19ba..6d33781d45 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelTest.java
@@ -14,12 +14,10 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
@@ -27,9 +25,6 @@ import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class ModelTest {
 	Logger									 logger	= Logger.getLogger(ModelTest.class);
@@ -161,28 +156,23 @@ public class ModelTest {
 	private Model createModel() {
 		Model model = new ModelFullIndexed(null);
 
-
 		SpeciesAlias proteinAlias = new GenericProteinAlias("sa1");
 		proteinAlias.setName("s1");
 		model.addAlias(proteinAlias);
 
-
 		SpeciesAlias proteinAlias2 = new GenericProteinAlias("sa2");
 		proteinAlias2.setName("s1");
 		model.addAlias(proteinAlias2);
 
-
 		SpeciesAlias proteinAlias3 = new GenericProteinAlias("sa3");
 		proteinAlias3.setName("s1");
 		model.addAlias(proteinAlias3);
 
-
 		SpeciesAlias proteinAlias4 = new GenericProteinAlias("sa4");
 		proteinAlias4.setName("s5");
 		proteinAlias4.addMiriamData(new MiriamData(MiriamRelationType.BQ_MODEL_IS, MiriamType.CHEMBL_TARGET, "CHEMBL12345"));
 		model.addAlias(proteinAlias4);
 
-
 		CompartmentAlias compartmentAlias = new CompartmentAlias("cca");
 		compartmentAlias.setName("c1");
 		compartmentAlias.addMiriamData(new MiriamData(MiriamRelationType.BQ_MODEL_IS, MiriamType.CHEBI, "CHEBI:12"));
@@ -197,7 +187,6 @@ public class ModelTest {
 		try {
 			Model model = new ModelFullIndexed(null);
 
-
 			SpeciesAlias alias = new GenericProteinAlias("2");
 			alias.setWidth(100);
 			alias.setHeight(100);
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/SubmodelConnectionComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/SubmodelConnectionComparatorTest.java
index 70566deae5..daf95263a3 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/SubmodelConnectionComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/SubmodelConnectionComparatorTest.java
@@ -9,13 +9,11 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class SubmodelConnectionComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/modifier/CatalysisTest.java b/model/src/test/java/lcsb/mapviewer/model/map/modifier/CatalysisTest.java
index a4dfad66ad..0d8269a0e6 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/modifier/CatalysisTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/modifier/CatalysisTest.java
@@ -11,8 +11,6 @@ import org.junit.Test;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class CatalysisTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/modifier/InhibitionTest.java b/model/src/test/java/lcsb/mapviewer/model/map/modifier/InhibitionTest.java
index 11824c36dd..c3818fc0da 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/modifier/InhibitionTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/modifier/InhibitionTest.java
@@ -11,7 +11,6 @@ import org.junit.Test;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class InhibitionTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/modifier/ModulationTest.java b/model/src/test/java/lcsb/mapviewer/model/map/modifier/ModulationTest.java
index db46dc85f4..5508d9c5a4 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/modifier/ModulationTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/modifier/ModulationTest.java
@@ -11,7 +11,6 @@ import org.junit.Test;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class ModulationTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulationTest.java b/model/src/test/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulationTest.java
index 7cacc0a727..b6f2ca0e75 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulationTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulationTest.java
@@ -11,7 +11,6 @@ import org.junit.Test;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class PhysicalStimulationTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/modifier/TriggerTest.java b/model/src/test/java/lcsb/mapviewer/model/map/modifier/TriggerTest.java
index 89726e7ee0..f6ea1e96e4 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/modifier/TriggerTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/modifier/TriggerTest.java
@@ -11,7 +11,6 @@ import org.junit.Test;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class TriggerTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/modifier/UnknownInhibitionTest.java b/model/src/test/java/lcsb/mapviewer/model/map/modifier/UnknownInhibitionTest.java
index b04c967961..9d6214a920 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/modifier/UnknownInhibitionTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/modifier/UnknownInhibitionTest.java
@@ -11,7 +11,6 @@ import org.junit.Test;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class UnknownInhibitionTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/reaction/NodeOperatorComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/reaction/NodeOperatorComparatorTest.java
index 3550a0a748..3b161e9152 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/reaction/NodeOperatorComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/reaction/NodeOperatorComparatorTest.java
@@ -2,7 +2,6 @@ package lcsb.mapviewer.model.map.reaction;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.awt.geom.Point2D;
 
@@ -14,10 +13,6 @@ import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class NodeOperatorComparatorTest {
 
@@ -105,7 +100,6 @@ public class NodeOperatorComparatorTest {
 	private NodeOperator createNodeOperator() {
 		AndOperator result = new AndOperator();
 
-
 		SpeciesAlias alias0 = new GenericProteinAlias("id0");
 		alias0.setName("protein a");
 		alias0.setX(12.0);
@@ -117,7 +111,6 @@ public class NodeOperatorComparatorTest {
 
 		result.addOutput(product);
 
-
 		SpeciesAlias alias1 = new GenericProteinAlias("id1");
 		alias1.setName("protein b");
 		alias1.setX(120.0);
@@ -129,7 +122,6 @@ public class NodeOperatorComparatorTest {
 
 		result.addInput(reactant);
 
-
 		SpeciesAlias alias2 = new GeneAlias("id2");
 		alias2.setName("gene b");
 		alias2.setX(320.0);
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionComparatorTest.java
index c159a40985..1c987b9b18 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionComparatorTest.java
@@ -2,7 +2,6 @@ package lcsb.mapviewer.model.map.reaction;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.awt.geom.Point2D;
 
@@ -21,9 +20,6 @@ import lcsb.mapviewer.model.map.layout.alias.UnknownAlias;
 import lcsb.mapviewer.model.map.modifier.Catalysis;
 import lcsb.mapviewer.model.map.reaction.type.StateTransitionReaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Unknown;
 
 public class ReactionComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionNodeComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionNodeComparatorTest.java
index b43140b0aa..89c180e1e8 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionNodeComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionNodeComparatorTest.java
@@ -2,7 +2,6 @@ package lcsb.mapviewer.model.map.reaction;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.awt.geom.Point2D;
 
@@ -14,10 +13,6 @@ import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
 
 public class ReactionNodeComparatorTest {
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionTest.java b/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionTest.java
index 53c0047ccf..11cf8a18e8 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionTest.java
@@ -34,13 +34,12 @@ import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.modifier.Catalysis;
 import lcsb.mapviewer.model.map.reaction.type.DissociationReaction;
 import lcsb.mapviewer.model.map.reaction.type.HeterodimerAssociationReaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class ReactionTest extends ModelTestFunctions {
 
-	Logger								 logger	= Logger.getLogger(ReactantTest.class);
+	Logger							 logger	= Logger.getLogger(ReactantTest.class);
 
-	private SpeciesAlias	 alias;
+	private SpeciesAlias alias;
 
 	@Before
 	public void setUp() throws Exception {
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/AllSpeciesTests.java b/model/src/test/java/lcsb/mapviewer/model/map/species/AllSpeciesTests.java
deleted file mode 100644
index 48cabcfeb5..0000000000
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/AllSpeciesTests.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package lcsb.mapviewer.model.map.species;
-
-import lcsb.mapviewer.model.map.species.fields.AllSpeciesFieldsTests;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-@RunWith(Suite.class)
-@SuiteClasses({ AllSpeciesFieldsTests.class,//
-		AntisenseRnaComparatorTest.class, //
-		AntisenseRnaTest.class, //
-		ComplexSpeciesComparatorTest.class, //
-		ComplexSpeciesTest.class,//
-		DegradedComparatorTest.class, //
-		DegradedTest.class, //
-		DrugComparatorTest.class, //
-		DrugTest.class, //
-		GeneComparatorTest.class, //
-		GenericProteinTest.class,//
-		GeneTest.class, //
-		IonChannelProteinTest.class, //
-		IonComparatorTest.class, //
-		IonTest.class, //
-		PhenotypeComparatorTest.class, //
-		PhenotypeTest.class,//
-		ProteinComparatorTest.class, //
-		ProteinTest.class, //
-		ReceptorProteinTest.class, //
-		RnaComparatorTest.class, //
-		RnaTest.class, //
-		SimpleMoleculeComparatorTest.class,//
-		SimpleMoleculeTest.class, //
-		SpeciesComparatorTest.class, //
-		SpeciesTest.class, //
-		TruncatedProteinTest.class, //
-		UnknownComparatorTest.class, //
-		UnknownTest.class,//
-})
-public class AllSpeciesTests {
-
-}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AllSpeciesFieldsTests.java b/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AllSpeciesFieldsTests.java
deleted file mode 100644
index a6a40ca862..0000000000
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AllSpeciesFieldsTests.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-@RunWith(Suite.class)
-@SuiteClasses({ AntisenseRnaRegionTest.class, //
-		AssociatedElementComparatorTest.class, //
-		AssociatedElementTest.class, //
-		ModificationResidueTest.class, //
-		ModificationStateTest.class, //
-		PositionToCompartmentTest.class, //
-		RnaRegionTest.class,//
-
-})
-public class AllSpeciesFieldsTests {
-
-}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementComparatorTest.java
deleted file mode 100644
index 983ff68bbf..0000000000
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementComparatorTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.common.exception.InvalidClassException;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.MiriamType;
-
-public class AssociatedElementComparatorTest {
-
-	AssociatedElementComparator comparator = new AssociatedElementComparator();
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testCompareEquals() {
-		try {
-			AssociatedElement ae1 = new AssociatedElement();
-			AssociatedElement ae2 = new AssociatedElement();
-			assertTrue(comparator.compare(ae1, ae2) == 0);
-			
-			ae1 = new AssociatedElement();
-			ae2 = new AssociatedElement();
-			ae1.setData(new MiriamData(MiriamType.CAS,"TE"));
-			ae2.setData(new MiriamData(MiriamType.CAS,"TE"));
-			assertTrue(comparator.compare(ae1, ae2) == 0);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testCompareDifferent() {
-		try {
-			AssociatedElement ae1 = new AssociatedElement();
-			AssociatedElement ae2 = new AssociatedElement();
-			ae2.setSource(MiriamType.CHEBI);
-			assertTrue(comparator.compare(ae1, ae2) != 0);
-			assertTrue(comparator.compare(ae2, ae1) != 0);
-			assertTrue(comparator.compare(null, ae2) != 0);
-			assertTrue(comparator.compare(ae1, null) != 0);
-			assertTrue(comparator.compare(null, null) == 0);
-
-			ae1 = new AssociatedElement();
-			ae2 = new AssociatedElement();
-			ae1.setSource(null);
-			assertTrue(comparator.compare(ae1, ae2) != 0);
-
-			ae1 = new AssociatedElement();
-			ae2 = new AssociatedElement();
-			ae1.setData(new MiriamData(MiriamType.CAS,"TE"));
-			assertTrue(comparator.compare(ae1, ae2) != 0);
-			assertTrue(comparator.compare(ae2, ae1) != 0);
-
-			ae1 = new AssociatedElement();
-			ae2 = new AssociatedElement();
-			ae1.setData(new MiriamData(MiriamType.CAS,"TE"));
-			ae2.setData(new MiriamData(MiriamType.CAS,"TE2"));
-			assertTrue(comparator.compare(ae1, ae2) != 0);
-			assertTrue(comparator.compare(ae2, ae1) != 0);
-
-			AssociatedElement ae3 = new AssociatedElement() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			};
-			assertTrue(comparator.compare(ae1, ae3) != 0);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testCompareInvalid() {
-		try {
-			AssociatedElement ae3 = new AssociatedElement() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			};
-			comparator.compare(ae3, ae3);
-			fail("Exception expected");
-		} catch (InvalidClassException e) {
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementTest.java b/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementTest.java
deleted file mode 100644
index 543436256d..0000000000
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/fields/AssociatedElementTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package lcsb.mapviewer.model.map.species.fields;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import org.apache.commons.lang3.SerializationUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.species.Phenotype;
-
-public class AssociatedElementTest {
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testSerialization() {
-		try {
-			SerializationUtils.serialize(new AssociatedElement());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testConstructor() {
-		try {
-			AssociatedElement original = new AssociatedElement();
-			original.setData(new MiriamData());
-			AssociatedElement copy = new AssociatedElement(original);
-			assertNotNull(copy);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-	@Test
-	public void testGetters() {
-		try {
-			AssociatedElement copy = new AssociatedElement();
-			int id = 23;
-			Phenotype phenotype = new Phenotype();
-			copy.setId(id);
-			copy.setPhenotype(phenotype);
-			
-			assertEquals(id, copy.getId());
-			assertEquals(phenotype, copy.getPhenotype());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-}
diff --git a/model/src/test/java/lcsb/mapviewer/modelutils/map/ElementUtilsTest.java b/model/src/test/java/lcsb/mapviewer/modelutils/map/ElementUtilsTest.java
index 742bf31236..0bc877fd6c 100644
--- a/model/src/test/java/lcsb/mapviewer/modelutils/map/ElementUtilsTest.java
+++ b/model/src/test/java/lcsb/mapviewer/modelutils/map/ElementUtilsTest.java
@@ -16,10 +16,12 @@ import org.junit.Before;
 import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.layout.alias.IonAlias;
+import lcsb.mapviewer.model.map.layout.alias.IonChannelProteinAlias;
+import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownNegativeInfluenceReaction;
-import lcsb.mapviewer.model.map.species.Ion;
 
 public class ElementUtilsTest {
 	Logger logger = Logger.getLogger(ElementUtilsTest.class);
@@ -91,9 +93,9 @@ public class ElementUtilsTest {
 		try {
 			ElementUtils elementUtils = new ElementUtils();
 
-			List<Class<? extends Element>> list = elementUtils.getAvailableElementSubclasses();
-			assertTrue(list.contains(lcsb.mapviewer.model.map.species.IonChannelProtein.class));
-			assertFalse(list.contains(lcsb.mapviewer.model.map.species.Protein.class));
+			List<Class<? extends Alias>> list = elementUtils.getAvailableElementSubclasses();
+			assertTrue(list.contains(IonChannelProteinAlias.class));
+			assertFalse(list.contains(ProteinAlias.class));
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw e;
@@ -104,8 +106,8 @@ public class ElementUtilsTest {
 	public void tesClassByName() throws Exception {
 		try {
 			ElementUtils elementUtils = new ElementUtils();
-			assertEquals(Ion.class, elementUtils.getClassByName(Ion.class.getSimpleName()));
-			assertEquals(Ion.class, elementUtils.getClassByName("Ion"));
+			assertEquals(IonAlias.class, elementUtils.getClassByName(IonAlias.class.getSimpleName()));
+			assertEquals(IonAlias.class, elementUtils.getClassByName("Ion"));
 			assertNull(elementUtils.getClassByName("unknown class name"));
 
 		} catch (Exception e) {
diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java
index 1c7ad10861..10756d049d 100644
--- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java
+++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java
@@ -22,11 +22,14 @@ import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.converter.ConverterException;
 import lcsb.mapviewer.converter.model.celldesigner.reaction.ReactionLineData;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierTypeUtils;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
@@ -61,9 +64,6 @@ import lcsb.mapviewer.model.map.reaction.type.HeterodimerAssociationReaction;
 import lcsb.mapviewer.model.map.reaction.type.ReducedNotation;
 import lcsb.mapviewer.model.map.reaction.type.TwoReactantReactionInterface;
 import lcsb.mapviewer.model.map.reaction.type.UnknownTransitionReaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.Unknown;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 import lcsb.mapviewer.wikipathway.model.DataNode;
 import lcsb.mapviewer.wikipathway.model.Edge;
diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GpmlModificationType.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GpmlModificationType.java
index 8be4928858..28c1614bd0 100644
--- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GpmlModificationType.java
+++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GpmlModificationType.java
@@ -1,136 +1,136 @@
-package lcsb.mapviewer.wikipathway.model;
-
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
-
-/**
- * This enum represents type of line in GPML format.
- * 
- * @author Piotr Gawron
- *
- */
-public enum GpmlModificationType {
-
-	/**
-	 * Gpml type representing: {@link ModificationState#PHOSPHORYLATED}.
-	 */
-	PHOSPHORYLATED("P", ModificationState.PHOSPHORYLATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#ACETYLATED}.
-	 */
-	ACETYLATED("Ac", ModificationState.ACETYLATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#UBIQUITINATED}.
-	 */
-	UBIQUITINATED("Ub", ModificationState.UBIQUITINATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#METHYLATED}.
-	 */
-	METHYLATED("Me", ModificationState.METHYLATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#HYDROXYLATED}.
-	 */
-	HYDROXYLATED("OH", ModificationState.HYDROXYLATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#MYRISTOYLATED}.
-	 */
-	MYRISTOYLATED("My", ModificationState.MYRISTOYLATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#SULFATED}.
-	 */
-	SULFATED("S", ModificationState.SULFATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#PRENYLATED}.
-	 */
-	PRENYLATED("Pr", ModificationState.PRENYLATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#GLYCOSYLATED}.
-	 */
-	GLYCOSYLATED("G", ModificationState.GLYCOSYLATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#PALMYTOYLATED}.
-	 */
-	PALMYTOYLATED("Pa", ModificationState.PALMYTOYLATED), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#UNKNOWN}.
-	 */
-	UNKOWN("", ModificationState.UNKNOWN), //
-
-	/**
-	 * Gpml type representing: {@link ModificationState#PROTONATED}.
-	 */
-	PROTONATED("H", ModificationState.PROTONATED);
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param gpmlString
-	 *          {@link #gpmlString}
-	 * @param correspondingModificationState
-	 *          {@link #correspondingModificationState}
-	 */
-	GpmlModificationType(String gpmlString, ModificationState correspondingModificationState) {
-		this.gpmlString = gpmlString;
-		this.correspondingModificationState = correspondingModificationState;
-	}
-
-	/**
-	 * String in GPML format representig this type.
-	 */
-	private String						gpmlString;
-
-	/**
-	 * Which {@link ModificationState} in our model should be used for this GPML
-	 * modification type.
-	 */
-	private ModificationState correspondingModificationState;
-
-	/**
-	 * @return the gpmlString
-	 * @see #gpmlString
-	 */
-	public String getGpmlString() {
-		return gpmlString;
-	}
-
-	/**
-	 * Returns {@link GpmlModificationType type} identified by {@link #gpmlName
-	 * gpml string} identifing the type.
-	 * 
-	 * @param gpmlName
-	 *          {@link #gpmlString}
-	 * @return {@link GpmlModificationType type} identified by {@link #gpmlName
-	 *         gpml string} identifing the type
-	 * @throws UnknownTypeException
-	 *           thrown when type cannot be found
-	 */
-	public static GpmlModificationType getByGpmlName(String gpmlName) throws UnknownTypeException {
-		for (GpmlModificationType type : values()) {
-			if (type.getGpmlString() == null) {
-				if (gpmlName == null) {
-					return type;
-				}
-			} else if (type.getGpmlString().equalsIgnoreCase(gpmlName)) {
-				return type;
-			}
-		}
-		throw new UnknownTypeException("Unknown state type: " + gpmlName);
-	}
-
-	/**
-	 * @return the correspondingModificationState
-	 * @see #correspondingModificationState
-	 */
-	public ModificationState getCorrespondingModificationState() {
-		return correspondingModificationState;
-	}
-}
+package lcsb.mapviewer.wikipathway.model;
+
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
+
+/**
+ * This enum represents type of line in GPML format.
+ * 
+ * @author Piotr Gawron
+ *
+ */
+public enum GpmlModificationType {
+
+	/**
+	 * Gpml type representing: {@link ModificationState#PHOSPHORYLATED}.
+	 */
+	PHOSPHORYLATED("P", ModificationState.PHOSPHORYLATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#ACETYLATED}.
+	 */
+	ACETYLATED("Ac", ModificationState.ACETYLATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#UBIQUITINATED}.
+	 */
+	UBIQUITINATED("Ub", ModificationState.UBIQUITINATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#METHYLATED}.
+	 */
+	METHYLATED("Me", ModificationState.METHYLATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#HYDROXYLATED}.
+	 */
+	HYDROXYLATED("OH", ModificationState.HYDROXYLATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#MYRISTOYLATED}.
+	 */
+	MYRISTOYLATED("My", ModificationState.MYRISTOYLATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#SULFATED}.
+	 */
+	SULFATED("S", ModificationState.SULFATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#PRENYLATED}.
+	 */
+	PRENYLATED("Pr", ModificationState.PRENYLATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#GLYCOSYLATED}.
+	 */
+	GLYCOSYLATED("G", ModificationState.GLYCOSYLATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#PALMYTOYLATED}.
+	 */
+	PALMYTOYLATED("Pa", ModificationState.PALMYTOYLATED), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#UNKNOWN}.
+	 */
+	UNKOWN("", ModificationState.UNKNOWN), //
+
+	/**
+	 * Gpml type representing: {@link ModificationState#PROTONATED}.
+	 */
+	PROTONATED("H", ModificationState.PROTONATED);
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param gpmlString
+	 *          {@link #gpmlString}
+	 * @param correspondingModificationState
+	 *          {@link #correspondingModificationState}
+	 */
+	GpmlModificationType(String gpmlString, ModificationState correspondingModificationState) {
+		this.gpmlString = gpmlString;
+		this.correspondingModificationState = correspondingModificationState;
+	}
+
+	/**
+	 * String in GPML format representig this type.
+	 */
+	private String						gpmlString;
+
+	/**
+	 * Which {@link ModificationState} in our model should be used for this GPML
+	 * modification type.
+	 */
+	private ModificationState correspondingModificationState;
+
+	/**
+	 * @return the gpmlString
+	 * @see #gpmlString
+	 */
+	public String getGpmlString() {
+		return gpmlString;
+	}
+
+	/**
+	 * Returns {@link GpmlModificationType type} identified by {@link #gpmlName
+	 * gpml string} identifing the type.
+	 * 
+	 * @param gpmlName
+	 *          {@link #gpmlString}
+	 * @return {@link GpmlModificationType type} identified by {@link #gpmlName
+	 *         gpml string} identifing the type
+	 * @throws UnknownTypeException
+	 *           thrown when type cannot be found
+	 */
+	public static GpmlModificationType getByGpmlName(String gpmlName) throws UnknownTypeException {
+		for (GpmlModificationType type : values()) {
+			if (type.getGpmlString() == null) {
+				if (gpmlName == null) {
+					return type;
+				}
+			} else if (type.getGpmlString().equalsIgnoreCase(gpmlName)) {
+				return type;
+			}
+		}
+		throw new UnknownTypeException("Unknown state type: " + gpmlName);
+	}
+
+	/**
+	 * @return the correspondingModificationState
+	 * @see #correspondingModificationState
+	 */
+	public ModificationState getCorrespondingModificationState() {
+		return correspondingModificationState;
+	}
+}
diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/State.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/State.java
index 915754779e..d0023f4715 100644
--- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/State.java
+++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/State.java
@@ -1,258 +1,258 @@
-package lcsb.mapviewer.wikipathway.model;
-
-import java.awt.geom.Rectangle2D;
-import java.util.ArrayList;
-import java.util.List;
-
-import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
-
-/**
- * Class used to store data about {@link DataNode} state from .gpml.
- * 
- * @author Piotr Gawron
- * 
- */
-public class State extends GraphicalPathwayElement {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * Shape of the element.
-	 */
-	private String						shape;
-
-	/**
-	 * References for given edge.
-	 */
-	private List<MiriamData>	references			 = new ArrayList<>();
-
-	/**
-	 * Object where this state is placed.
-	 */
-	private String						graphRef;
-
-	/**
-	 * State correspondig to {@link lcsb.mapviewer.model.map.species.Protein#structuralState protein structural state}.
-	 */
-	private String						structuralState;
-
-	/**
-	 * Type of the modification.
-	 */
-	private ModificationState type;
-
-	/**
-	 * X position on {@link #graphRef} element.
-	 */
-	private Double						relX;
-
-	/**
-	 * Y position on {@link #graphRef} element.
-	 */
-	private Double						relY;
-
-	/**
-	 * Width of the element.
-	 */
-	private Double						width;
-
-	/**
-	 * Heightof the element.
-	 */
-	private Double						height;
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param graphId
-	 *          {@link PathwayElement#graphId}
-	 */
-	public State(String graphId) {
-		super(graphId);
-	}
-
-	/**
-	 * Empty constructor that should be used only by serialization tools and
-	 * subclasses.
-	 */
-	protected State() {
-	}
-
-	@Override
-	String getName() {
-		throw new NotImplementedException();
-	}
-
-	@Override
-	public Rectangle2D getRectangle() {
-		throw new NotImplementedException();
-	}
-
-	/**
-	 * @return the shape
-	 * @see #shape
-	 */
-	public String getShape() {
-		return shape;
-	}
-
-	/**
-	 * @param shape
-	 *          the shape to set
-	 * @see #shape
-	 */
-	public void setShape(String shape) {
-		this.shape = shape;
-	}
-
-	/**
-	 * @return the relX
-	 * @see #relX
-	 */
-	public Double getRelX() {
-		return relX;
-	}
-
-	/**
-	 * @param relX
-	 *          the relX to set
-	 * @see #relX
-	 */
-	public void setRelX(Double relX) {
-		this.relX = relX;
-	}
-
-	/**
-	 * @return the relY
-	 * @see #relY
-	 */
-	public Double getRelY() {
-		return relY;
-	}
-
-	/**
-	 * @param relY
-	 *          the relY to set
-	 * @see #relY
-	 */
-	public void setRelY(Double relY) {
-		this.relY = relY;
-	}
-
-	/**
-	 * @return the width
-	 * @see #width
-	 */
-	public Double getWidth() {
-		return width;
-	}
-
-	/**
-	 * @param width
-	 *          the width to set
-	 * @see #width
-	 */
-	public void setWidth(Double width) {
-		this.width = width;
-	}
-
-	/**
-	 * @return the height
-	 * @see #height
-	 */
-	public Double getHeight() {
-		return height;
-	}
-
-	/**
-	 * @param height
-	 *          the height to set
-	 * @see #height
-	 */
-	public void setHeight(Double height) {
-		this.height = height;
-	}
-
-	/**
-	 * @return the graphRef
-	 * @see #graphRef
-	 */
-	public String getGraphRef() {
-		return graphRef;
-	}
-
-	/**
-	 * @param graphRef
-	 *          the graphRef to set
-	 * @see #graphRef
-	 */
-	public void setGraphRef(String graphRef) {
-		this.graphRef = graphRef;
-	}
-
-	/**
-	 * @return the references
-	 * @see #references
-	 */
-	public List<MiriamData> getReferences() {
-		return references;
-	}
-
-	/**
-	 * @param references
-	 *          the references to set
-	 * @see #references
-	 */
-	public void setReferences(List<MiriamData> references) {
-		this.references = references;
-	}
-
-	/**
-	 * Adds reference to object.
-	 * 
-	 * @param reference
-	 *          reference to add
-	 */
-	public void addReference(MiriamData reference) {
-		this.references.add(reference);
-	}
-
-	/**
-	 * @return the type
-	 * @see #type
-	 */
-	public ModificationState getType() {
-		return type;
-	}
-
-	/**
-	 * @param type
-	 *          the type to set
-	 * @see #type
-	 */
-	public void setType(ModificationState type) {
-		this.type = type;
-	}
-
-	/**
-	 * @return the structuralState
-	 * @see #structuralState
-	 */
-	public String getStructuralState() {
-		return structuralState;
-	}
-
-	/**
-	 * @param structuralState the structuralState to set
-	 * @see #structuralState
-	 */
-	public void setStructuralState(String structuralState) {
-		this.structuralState = structuralState;
-	}
-
-}
+package lcsb.mapviewer.wikipathway.model;
+
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.List;
+
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
+
+/**
+ * Class used to store data about {@link DataNode} state from .gpml.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class State extends GraphicalPathwayElement {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Shape of the element.
+	 */
+	private String						shape;
+
+	/**
+	 * References for given edge.
+	 */
+	private List<MiriamData>	references			 = new ArrayList<>();
+
+	/**
+	 * Object where this state is placed.
+	 */
+	private String						graphRef;
+
+	/**
+	 * State correspondig to {@link lcsb.mapviewer.converter.model.celldesigner.structure.Protein#structuralState protein structural state}.
+	 */
+	private String						structuralState;
+
+	/**
+	 * Type of the modification.
+	 */
+	private ModificationState type;
+
+	/**
+	 * X position on {@link #graphRef} element.
+	 */
+	private Double						relX;
+
+	/**
+	 * Y position on {@link #graphRef} element.
+	 */
+	private Double						relY;
+
+	/**
+	 * Width of the element.
+	 */
+	private Double						width;
+
+	/**
+	 * Heightof the element.
+	 */
+	private Double						height;
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param graphId
+	 *          {@link PathwayElement#graphId}
+	 */
+	public State(String graphId) {
+		super(graphId);
+	}
+
+	/**
+	 * Empty constructor that should be used only by serialization tools and
+	 * subclasses.
+	 */
+	protected State() {
+	}
+
+	@Override
+	String getName() {
+		throw new NotImplementedException();
+	}
+
+	@Override
+	public Rectangle2D getRectangle() {
+		throw new NotImplementedException();
+	}
+
+	/**
+	 * @return the shape
+	 * @see #shape
+	 */
+	public String getShape() {
+		return shape;
+	}
+
+	/**
+	 * @param shape
+	 *          the shape to set
+	 * @see #shape
+	 */
+	public void setShape(String shape) {
+		this.shape = shape;
+	}
+
+	/**
+	 * @return the relX
+	 * @see #relX
+	 */
+	public Double getRelX() {
+		return relX;
+	}
+
+	/**
+	 * @param relX
+	 *          the relX to set
+	 * @see #relX
+	 */
+	public void setRelX(Double relX) {
+		this.relX = relX;
+	}
+
+	/**
+	 * @return the relY
+	 * @see #relY
+	 */
+	public Double getRelY() {
+		return relY;
+	}
+
+	/**
+	 * @param relY
+	 *          the relY to set
+	 * @see #relY
+	 */
+	public void setRelY(Double relY) {
+		this.relY = relY;
+	}
+
+	/**
+	 * @return the width
+	 * @see #width
+	 */
+	public Double getWidth() {
+		return width;
+	}
+
+	/**
+	 * @param width
+	 *          the width to set
+	 * @see #width
+	 */
+	public void setWidth(Double width) {
+		this.width = width;
+	}
+
+	/**
+	 * @return the height
+	 * @see #height
+	 */
+	public Double getHeight() {
+		return height;
+	}
+
+	/**
+	 * @param height
+	 *          the height to set
+	 * @see #height
+	 */
+	public void setHeight(Double height) {
+		this.height = height;
+	}
+
+	/**
+	 * @return the graphRef
+	 * @see #graphRef
+	 */
+	public String getGraphRef() {
+		return graphRef;
+	}
+
+	/**
+	 * @param graphRef
+	 *          the graphRef to set
+	 * @see #graphRef
+	 */
+	public void setGraphRef(String graphRef) {
+		this.graphRef = graphRef;
+	}
+
+	/**
+	 * @return the references
+	 * @see #references
+	 */
+	public List<MiriamData> getReferences() {
+		return references;
+	}
+
+	/**
+	 * @param references
+	 *          the references to set
+	 * @see #references
+	 */
+	public void setReferences(List<MiriamData> references) {
+		this.references = references;
+	}
+
+	/**
+	 * Adds reference to object.
+	 * 
+	 * @param reference
+	 *          reference to add
+	 */
+	public void addReference(MiriamData reference) {
+		this.references.add(reference);
+	}
+
+	/**
+	 * @return the type
+	 * @see #type
+	 */
+	public ModificationState getType() {
+		return type;
+	}
+
+	/**
+	 * @param type
+	 *          the type to set
+	 * @see #type
+	 */
+	public void setType(ModificationState type) {
+		this.type = type;
+	}
+
+	/**
+	 * @return the structuralState
+	 * @see #structuralState
+	 */
+	public String getStructuralState() {
+		return structuralState;
+	}
+
+	/**
+	 * @param structuralState the structuralState to set
+	 * @see #structuralState
+	 */
+	public void setStructuralState(String structuralState) {
+		this.structuralState = structuralState;
+	}
+
+}
diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/StateParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/StateParserTest.java
index 5332f30cbf..e4b453e25b 100644
--- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/StateParserTest.java
+++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/StateParserTest.java
@@ -8,7 +8,7 @@ import org.junit.Test;
 import org.w3c.dom.Element;
 
 import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
+import lcsb.mapviewer.model.map.layout.alias.ModificationState;
 import lcsb.mapviewer.wikipathway.WikipathwaysTestFunctions;
 import lcsb.mapviewer.wikipathway.model.State;
 
diff --git a/persist/src/main/java/lcsb/mapviewer/persist/dao/map/graph/DataMiningDao.java b/persist/src/main/java/lcsb/mapviewer/persist/dao/map/graph/DataMiningDao.java
index 7d9262afd6..0348b5ed20 100644
--- a/persist/src/main/java/lcsb/mapviewer/persist/dao/map/graph/DataMiningDao.java
+++ b/persist/src/main/java/lcsb/mapviewer/persist/dao/map/graph/DataMiningDao.java
@@ -1,55 +1,55 @@
-package lcsb.mapviewer.persist.dao.map.graph;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.graph.DataMining;
-import lcsb.mapviewer.persist.dao.BaseDao;
-
-import org.apache.log4j.Logger;
-import org.hibernate.Query;
-
-/**
- * Data access object for {@link DataMining} class.
- * 
- * @author Piotr Gawron
- * 
- */
-public class DataMiningDao extends BaseDao<DataMining> {
-	
-	/**
-	 * Default class logger.
-	 */
-	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(DataMiningDao.class);
-
-	/**
-	 * Default constructor.
-	 */
-
-	public DataMiningDao() {
-		super(DataMining.class);
-	}
-
-	/**
-	 * Returns the data mining elements for unified node.
-	 * 
-	 * @param node
-	 *          node for which data mining entries should be returned
-	 * @return the data mining elements for unified node
-	 */
-	public Collection<DataMining> getMissingConnectionForElement(Element node) {
-		if (node.getId() == 0) {
-			return new ArrayList<DataMining>();
-		} else {
-			String queryString = "from " + this.getClazz().getSimpleName() + " where element=:node";
-			Query query = getSession().createQuery(queryString);
-			@SuppressWarnings("unchecked")
-			List<DataMining> list = query.setParameter("node", node).list();
-			return list;
-		}
-	}
-
-}
+package lcsb.mapviewer.persist.dao.map.graph;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.model.map.graph.DataMining;
+import lcsb.mapviewer.persist.dao.BaseDao;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Query;
+
+/**
+ * Data access object for {@link DataMining} class.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class DataMiningDao extends BaseDao<DataMining> {
+	
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private static Logger	logger	= Logger.getLogger(DataMiningDao.class);
+
+	/**
+	 * Default constructor.
+	 */
+
+	public DataMiningDao() {
+		super(DataMining.class);
+	}
+
+	/**
+	 * Returns the data mining elements for unified node.
+	 * 
+	 * @param node
+	 *          node for which data mining entries should be returned
+	 * @return the data mining elements for unified node
+	 */
+	public Collection<DataMining> getMissingConnectionForElement(Element node) {
+		if (node.getId() == 0) {
+			return new ArrayList<DataMining>();
+		} else {
+			String queryString = "from " + this.getClazz().getSimpleName() + " where element=:node";
+			Query query = getSession().createQuery(queryString);
+			@SuppressWarnings("unchecked")
+			List<DataMining> list = query.setParameter("node", node).list();
+			return list;
+		}
+	}
+
+}
diff --git a/persist/src/main/java/lcsb/mapviewer/persist/dao/map/species/SpeciesDao.java b/persist/src/main/java/lcsb/mapviewer/persist/dao/map/species/SpeciesDao.java
index 5682bd9724..44c220b83d 100644
--- a/persist/src/main/java/lcsb/mapviewer/persist/dao/map/species/SpeciesDao.java
+++ b/persist/src/main/java/lcsb/mapviewer/persist/dao/map/species/SpeciesDao.java
@@ -1,21 +1,21 @@
-package lcsb.mapviewer.persist.dao.map.species;
-
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.persist.dao.BaseDao;
-
-/**
- * Data access object for {@link Species} class.
- * 
- * @author Piotr Gawron
- * 
- */
-public class SpeciesDao extends BaseDao<Species> {
-
-	/**
-	 * Default constructor.
-	 */
-	public SpeciesDao() {
-		super(Species.class);
-	}
-
-}
+package lcsb.mapviewer.persist.dao.map.species;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.persist.dao.BaseDao;
+
+/**
+ * Data access object for {@link Species} class.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class SpeciesDao extends BaseDao<Species> {
+
+	/**
+	 * Default constructor.
+	 */
+	public SpeciesDao() {
+		super(Species.class);
+	}
+
+}
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/ProjectDaoTest.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/ProjectDaoTest.java
index 2d82e972ef..cbead2d998 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/ProjectDaoTest.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/ProjectDaoTest.java
@@ -11,10 +11,12 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.OverviewImage;
 import lcsb.mapviewer.model.map.OverviewModelLink;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
@@ -22,8 +24,6 @@ import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelComparator;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import lcsb.mapviewer.persist.PersistTestFunctions;
 
 public class ProjectDaoTest extends PersistTestFunctions {
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/CommentDaoTest.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/CommentDaoTest.java
index 76ef37ae06..6f1fe10e3e 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/CommentDaoTest.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/CommentDaoTest.java
@@ -8,12 +8,16 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.Comment;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
 import lcsb.mapviewer.model.map.layout.alias.GenericProteinAlias;
@@ -27,10 +31,6 @@ import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 import lcsb.mapviewer.persist.PersistTestFunctions;
 
 public class CommentDaoTest extends PersistTestFunctions {
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/LayoutDaoTest.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/LayoutDaoTest.java
index a492589bc4..a4895a8953 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/LayoutDaoTest.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/LayoutDaoTest.java
@@ -13,12 +13,13 @@ import org.junit.Before;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.cache.UploadedFileEntry;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
@@ -34,7 +35,6 @@ import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 import lcsb.mapviewer.persist.PersistTestFunctions;
 
 public class LayoutDaoTest extends PersistTestFunctions {
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/ModelDaoTest.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/ModelDaoTest.java
index 3f11429473..4cefbcc14f 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/ModelDaoTest.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/ModelDaoTest.java
@@ -13,12 +13,17 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
@@ -37,11 +42,6 @@ import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 import lcsb.mapviewer.persist.PersistTestFunctions;
 
 public class ModelDaoTest extends PersistTestFunctions {
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/graph/DataMiningDaoTest.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/graph/DataMiningDaoTest.java
index 3e03f099b2..7b6ada7d53 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/graph/DataMiningDaoTest.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/graph/DataMiningDaoTest.java
@@ -1,38 +1,38 @@
-package lcsb.mapviewer.persist.dao.map.graph;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.persist.PersistTestFunctions;
-
-public class DataMiningDaoTest extends PersistTestFunctions {
-
-	@Autowired
-	private DataMiningDao dataMiningDao;
-	
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testGetConnections() {
-		assertEquals(0, dataMiningDao.getMissingConnectionForElement(new Species()).size());
-	}
-	
-	@Test
-	public void testGetConnections2() {
-		Species species = new Species();
-		species.setId(1);
-		assertEquals(0, dataMiningDao.getMissingConnectionForElement(species).size());
-	}
-
-}
+package lcsb.mapviewer.persist.dao.map.graph;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.persist.PersistTestFunctions;
+
+public class DataMiningDaoTest extends PersistTestFunctions {
+
+	@Autowired
+	private DataMiningDao dataMiningDao;
+	
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testGetConnections() {
+		assertEquals(0, dataMiningDao.getMissingConnectionForElement(new Species()).size());
+	}
+	
+	@Test
+	public void testGetConnections2() {
+		Species species = new Species();
+		species.setId(1);
+		assertEquals(0, dataMiningDao.getMissingConnectionForElement(species).size());
+	}
+
+}
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/layout/alias/AliasDaoTest.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/layout/alias/AliasDaoTest.java
index 88a87b9c05..b3a651bda4 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/layout/alias/AliasDaoTest.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/layout/alias/AliasDaoTest.java
@@ -7,8 +7,11 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
@@ -19,9 +22,6 @@ import lcsb.mapviewer.model.map.model.AliasSubmodelConnection;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.model.SubmodelType;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.persist.PersistTestFunctions;
 
 public class AliasDaoTest extends PersistTestFunctions {
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/layout/alias/AliasDaoTest2.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/layout/alias/AliasDaoTest2.java
index 19ad3cdfb5..5f5e3fabad 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/layout/alias/AliasDaoTest2.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/layout/alias/AliasDaoTest2.java
@@ -10,6 +10,8 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationState;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
@@ -26,8 +28,6 @@ import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaRegionAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.fields.ModificationState;
 import lcsb.mapviewer.persist.PersistTestFunctions;
 
 public class AliasDaoTest2 extends PersistTestFunctions {
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/species/AntisenseRnaTest.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/species/AntisenseRnaTest.java
index 630962b826..82f3c6ee31 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/map/species/AntisenseRnaTest.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/map/species/AntisenseRnaTest.java
@@ -10,16 +10,16 @@ import org.junit.Before;
 import org.junit.Test;
 import org.springframework.test.annotation.Rollback;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaAlias;
 import lcsb.mapviewer.model.map.layout.alias.AntisenseRnaRegionAlias;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
 import lcsb.mapviewer.persist.PersistTestFunctions;
 
 @Rollback(true)
diff --git a/persist/src/test/java/lcsb/mapviewer/persist/dao/user/UserDaoTest.java b/persist/src/test/java/lcsb/mapviewer/persist/dao/user/UserDaoTest.java
index ea4ad85954..64af4ecedf 100644
--- a/persist/src/test/java/lcsb/mapviewer/persist/dao/user/UserDaoTest.java
+++ b/persist/src/test/java/lcsb/mapviewer/persist/dao/user/UserDaoTest.java
@@ -1,281 +1,281 @@
-package lcsb.mapviewer.persist.dao.user;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.password.PasswordEncoder;
-
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.user.User;
-import lcsb.mapviewer.model.user.UserAnnotationSchema;
-import lcsb.mapviewer.model.user.UserClassAnnotators;
-import lcsb.mapviewer.model.user.UserClassValidAnnotations;
-import lcsb.mapviewer.persist.PersistTestFunctions;
-
-public class UserDaoTest extends PersistTestFunctions {
-
-	@Autowired
-	protected PasswordEncoder	passwordEncoder;
-
-	protected Logger					logger			= Logger.getLogger(UserDaoTest.class.getName());
-	String										testLogin		= "test_login123";
-	String										testEmail		= "a@a.pl";
-	String										testPasswd	= "pwd";
-	String										testLogin2	= "test_login_tmp";
-	String										testName		= "John";
-	String										testSurname	= "Doe";
-
-	@Before
-	public void setUp() throws Exception {
-		Map<String, Object> params = new HashMap<String, Object>();
-		params.put("login_param", testLogin);
-		params.put("login_param2", testLogin2);
-		dbUtils.executeSqlQuery("delete from user_table where login = :login_param or login = :login_param2", params);
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testAddUpdateDelete() {
-		try {
-			User user = userDao.getUserByLogin(testLogin);
-			assertNull(user);
-
-			long counter = userDao.getCount();
-
-			user = new User();
-			user.setLogin(testLogin);
-			userDao.add(user);
-
-			long counter2 = userDao.getCount();
-			assertEquals(counter + 1, counter2);
-
-			user.setLogin(testLogin2);
-			userDao.update(user);
-
-			User user2 = userDao.getUserByLogin(testLogin2);
-			assertNotNull(user2);
-
-			userDao.delete(user);
-
-			user2 = userDao.getUserByLogin(testLogin2);
-			assertNull(user2);
-			counter2 = userDao.getCount();
-			assertEquals(counter, counter2);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			fail("Unexpected exception occured");
-		}
-	}
-
-	@Test
-	public void testAddDeleteAdd() {
-		try {
-			User user = userDao.getUserByLogin(testLogin);
-			assertNull(user);
-
-			long counter = userDao.getCount();
-
-			user = new User();
-			user.setLogin(testLogin);
-			userDao.add(user);
-
-			long counter2 = userDao.getCount();
-			assertEquals(counter + 1, counter2);
-
-			userDao.delete(user);
-
-			User user2 = userDao.getUserByLogin(testLogin);
-			assertNull(user2);
-
-			user2 = new User();
-			user2.setLogin(testLogin);
-			userDao.add(user2);
-
-			assertNotNull(userDao.getUserByLogin(testLogin));
-
-			userDao.delete(user2);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetUserByLoginAndPassword() throws Exception {
-		try {
-			User user = new User();
-			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
-			user.setLogin(testLogin);
-			userDao.add(user);
-			User user2 = userDao.getUserByLoginAndPassword(testLogin, testPasswd);
-			assertNotNull(user2);
-			assertEquals(user2.getId(), user.getId());
-			assertEquals(user2.getLogin(), user.getLogin());
-			assertEquals(user2.getCryptedPassword(), user.getCryptedPassword());
-			userDao.delete(user);
-			// after we remove it we shouldn't be able to get it
-			User user3 = userDao.getUserByLoginAndPassword(testLogin, testPasswd);
-			assertNull(user3);
-
-			// after we remove it we shouldn't be able to get the removed and modified
-			// object
-			User user4 = userDao.getUserByLoginAndPassword(user2.getLogin(), testPasswd);
-			assertNull(user4);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetUserByLoginAndEmptyPassword() throws Exception {
-		try {
-			User user = new User();
-			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
-			user.setLogin(testLogin);
-			userDao.add(user);
-			User user2 = userDao.getUserByLoginAndPassword(testLogin, null);
-			assertNull(user2);
-			userDao.delete(user);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetUserByLogin() throws Exception {
-		try {
-			User user = new User();
-			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
-			user.setLogin(testLogin);
-			userDao.add(user);
-			User user2 = userDao.getUserByLogin(testLogin);
-			assertNotNull(user2);
-			assertEquals(user2.getId(), user.getId());
-			assertEquals(user2.getLogin(), user.getLogin());
-			assertEquals(user2.getCryptedPassword(), user.getCryptedPassword());
-			user2 = userDao.getUserByLogin(testLogin2);
-			assertNull(user2);
-			userDao.delete(user);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetUserByEmail() throws Exception {
-		try {
-			User user = new User();
-			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
-			user.setLogin(testLogin);
-			user.setEmail(testEmail);
-			userDao.add(user);
-			User user2 = userDao.getUserByEmail(testEmail);
-			assertNotNull(user2);
-			assertEquals(user2.getId(), user.getId());
-			assertEquals(user2.getLogin(), user.getLogin());
-			assertEquals(user2.getCryptedPassword(), user.getCryptedPassword());
-			user2 = userDao.getUserByEmail(testEmail + "sadas");
-			assertNull(user2);
-			userDao.delete(user);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetUserByNameSurname() throws Exception {
-		try {
-			User user = new User();
-			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
-			user.setLogin(testLogin);
-			user.setEmail(testEmail);
-			user.setName(testName);
-			user.setSurname(testSurname);
-			userDao.add(user);
-			User user2 = userDao.getUserByNameSurname(testName + " " + testSurname);
-			assertNotNull(user2);
-			user2 = userDao.getUserByNameSurname(testName + "  " + testSurname);
-			assertNull(user2);
-			userDao.delete(user);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetAll() throws Exception {
-		try {
-			assertTrue(userDao.getAll().size() > 0);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testUserWithAnnotatorSchema() throws Exception {
-		try {
-			User user = new User();
-			UserAnnotationSchema uas = new UserAnnotationSchema();
-			uas.setValidateMiriamTypes(true);
-			UserClassAnnotators ca = new UserClassAnnotators();
-			ca.setClassName(Species.class);
-			ca.addAnnotator(String.class);
-			ca.addAnnotator(Integer.class);
-			uas.addClassAnnotator(ca);
-			uas.addClassAnnotator(new UserClassAnnotators(String.class, new ArrayList<String>()));
-			UserClassValidAnnotations cva = new UserClassValidAnnotations();
-			cva.setClassName(Reaction.class);
-			cva.addValidMiriamType(MiriamType.HGNC);
-			cva.addValidMiriamType(MiriamType.HGNC_SYMBOL);
-			uas.addClassValidAnnotations(cva);
-			uas.addClassValidAnnotations(new UserClassValidAnnotations(String.class, new ArrayList<MiriamType>()));
-			uas.addClassValidAnnotations(new UserClassValidAnnotations(Integer.class, new ArrayList<MiriamType>()));
-			user.setAnnotationSchema(uas);
-			userDao.add(user);
-			userDao.evict(user);
-			User user2 = userDao.getById(user.getId());
-			assertNotNull(user2);
-			UserAnnotationSchema uas2 = user2.getAnnotationSchema();
-			assertNotNull(uas2);
-			assertEquals(2, uas2.getClassAnnotators().size());
-			assertEquals(3, uas2.getClassValidAnnotators().size());
-			assertEquals(Species.class.getCanonicalName(), uas.getClassAnnotators().get(0).getClassName());
-			assertEquals(String.class.getCanonicalName(), uas.getClassAnnotators().get(0).getAnnotators().get(0));
-			assertEquals(Integer.class.getCanonicalName(), uas.getClassAnnotators().get(0).getAnnotators().get(1));
-			assertEquals(Reaction.class.getCanonicalName(), uas.getClassValidAnnotators().get(0).getClassName());
-			assertEquals(MiriamType.HGNC, uas.getClassValidAnnotators().get(0).getValidMiriamTypes().get(0));
-			assertEquals(MiriamType.HGNC_SYMBOL, uas.getClassValidAnnotators().get(0).getValidMiriamTypes().get(1));
-
-			userDao.delete(user2);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
+package lcsb.mapviewer.persist.dao.user;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.model.map.MiriamType;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+import lcsb.mapviewer.model.user.User;
+import lcsb.mapviewer.model.user.UserAnnotationSchema;
+import lcsb.mapviewer.model.user.UserClassAnnotators;
+import lcsb.mapviewer.model.user.UserClassValidAnnotations;
+import lcsb.mapviewer.persist.PersistTestFunctions;
+
+public class UserDaoTest extends PersistTestFunctions {
+
+	@Autowired
+	protected PasswordEncoder	passwordEncoder;
+
+	protected Logger					logger			= Logger.getLogger(UserDaoTest.class.getName());
+	String										testLogin		= "test_login123";
+	String										testEmail		= "a@a.pl";
+	String										testPasswd	= "pwd";
+	String										testLogin2	= "test_login_tmp";
+	String										testName		= "John";
+	String										testSurname	= "Doe";
+
+	@Before
+	public void setUp() throws Exception {
+		Map<String, Object> params = new HashMap<String, Object>();
+		params.put("login_param", testLogin);
+		params.put("login_param2", testLogin2);
+		dbUtils.executeSqlQuery("delete from user_table where login = :login_param or login = :login_param2", params);
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testAddUpdateDelete() {
+		try {
+			User user = userDao.getUserByLogin(testLogin);
+			assertNull(user);
+
+			long counter = userDao.getCount();
+
+			user = new User();
+			user.setLogin(testLogin);
+			userDao.add(user);
+
+			long counter2 = userDao.getCount();
+			assertEquals(counter + 1, counter2);
+
+			user.setLogin(testLogin2);
+			userDao.update(user);
+
+			User user2 = userDao.getUserByLogin(testLogin2);
+			assertNotNull(user2);
+
+			userDao.delete(user);
+
+			user2 = userDao.getUserByLogin(testLogin2);
+			assertNull(user2);
+			counter2 = userDao.getCount();
+			assertEquals(counter, counter2);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail("Unexpected exception occured");
+		}
+	}
+
+	@Test
+	public void testAddDeleteAdd() {
+		try {
+			User user = userDao.getUserByLogin(testLogin);
+			assertNull(user);
+
+			long counter = userDao.getCount();
+
+			user = new User();
+			user.setLogin(testLogin);
+			userDao.add(user);
+
+			long counter2 = userDao.getCount();
+			assertEquals(counter + 1, counter2);
+
+			userDao.delete(user);
+
+			User user2 = userDao.getUserByLogin(testLogin);
+			assertNull(user2);
+
+			user2 = new User();
+			user2.setLogin(testLogin);
+			userDao.add(user2);
+
+			assertNotNull(userDao.getUserByLogin(testLogin));
+
+			userDao.delete(user2);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetUserByLoginAndPassword() throws Exception {
+		try {
+			User user = new User();
+			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
+			user.setLogin(testLogin);
+			userDao.add(user);
+			User user2 = userDao.getUserByLoginAndPassword(testLogin, testPasswd);
+			assertNotNull(user2);
+			assertEquals(user2.getId(), user.getId());
+			assertEquals(user2.getLogin(), user.getLogin());
+			assertEquals(user2.getCryptedPassword(), user.getCryptedPassword());
+			userDao.delete(user);
+			// after we remove it we shouldn't be able to get it
+			User user3 = userDao.getUserByLoginAndPassword(testLogin, testPasswd);
+			assertNull(user3);
+
+			// after we remove it we shouldn't be able to get the removed and modified
+			// object
+			User user4 = userDao.getUserByLoginAndPassword(user2.getLogin(), testPasswd);
+			assertNull(user4);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetUserByLoginAndEmptyPassword() throws Exception {
+		try {
+			User user = new User();
+			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
+			user.setLogin(testLogin);
+			userDao.add(user);
+			User user2 = userDao.getUserByLoginAndPassword(testLogin, null);
+			assertNull(user2);
+			userDao.delete(user);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetUserByLogin() throws Exception {
+		try {
+			User user = new User();
+			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
+			user.setLogin(testLogin);
+			userDao.add(user);
+			User user2 = userDao.getUserByLogin(testLogin);
+			assertNotNull(user2);
+			assertEquals(user2.getId(), user.getId());
+			assertEquals(user2.getLogin(), user.getLogin());
+			assertEquals(user2.getCryptedPassword(), user.getCryptedPassword());
+			user2 = userDao.getUserByLogin(testLogin2);
+			assertNull(user2);
+			userDao.delete(user);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetUserByEmail() throws Exception {
+		try {
+			User user = new User();
+			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
+			user.setLogin(testLogin);
+			user.setEmail(testEmail);
+			userDao.add(user);
+			User user2 = userDao.getUserByEmail(testEmail);
+			assertNotNull(user2);
+			assertEquals(user2.getId(), user.getId());
+			assertEquals(user2.getLogin(), user.getLogin());
+			assertEquals(user2.getCryptedPassword(), user.getCryptedPassword());
+			user2 = userDao.getUserByEmail(testEmail + "sadas");
+			assertNull(user2);
+			userDao.delete(user);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetUserByNameSurname() throws Exception {
+		try {
+			User user = new User();
+			user.setCryptedPassword(passwordEncoder.encode(testPasswd));
+			user.setLogin(testLogin);
+			user.setEmail(testEmail);
+			user.setName(testName);
+			user.setSurname(testSurname);
+			userDao.add(user);
+			User user2 = userDao.getUserByNameSurname(testName + " " + testSurname);
+			assertNotNull(user2);
+			user2 = userDao.getUserByNameSurname(testName + "  " + testSurname);
+			assertNull(user2);
+			userDao.delete(user);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetAll() throws Exception {
+		try {
+			assertTrue(userDao.getAll().size() > 0);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testUserWithAnnotatorSchema() throws Exception {
+		try {
+			User user = new User();
+			UserAnnotationSchema uas = new UserAnnotationSchema();
+			uas.setValidateMiriamTypes(true);
+			UserClassAnnotators ca = new UserClassAnnotators();
+			ca.setClassName(Species.class);
+			ca.addAnnotator(String.class);
+			ca.addAnnotator(Integer.class);
+			uas.addClassAnnotator(ca);
+			uas.addClassAnnotator(new UserClassAnnotators(String.class, new ArrayList<String>()));
+			UserClassValidAnnotations cva = new UserClassValidAnnotations();
+			cva.setClassName(Reaction.class);
+			cva.addValidMiriamType(MiriamType.HGNC);
+			cva.addValidMiriamType(MiriamType.HGNC_SYMBOL);
+			uas.addClassValidAnnotations(cva);
+			uas.addClassValidAnnotations(new UserClassValidAnnotations(String.class, new ArrayList<MiriamType>()));
+			uas.addClassValidAnnotations(new UserClassValidAnnotations(Integer.class, new ArrayList<MiriamType>()));
+			user.setAnnotationSchema(uas);
+			userDao.add(user);
+			userDao.evict(user);
+			User user2 = userDao.getById(user.getId());
+			assertNotNull(user2);
+			UserAnnotationSchema uas2 = user2.getAnnotationSchema();
+			assertNotNull(uas2);
+			assertEquals(2, uas2.getClassAnnotators().size());
+			assertEquals(3, uas2.getClassValidAnnotators().size());
+			assertEquals(Species.class.getCanonicalName(), uas.getClassAnnotators().get(0).getClassName());
+			assertEquals(String.class.getCanonicalName(), uas.getClassAnnotators().get(0).getAnnotators().get(0));
+			assertEquals(Integer.class.getCanonicalName(), uas.getClassAnnotators().get(0).getAnnotators().get(1));
+			assertEquals(Reaction.class.getCanonicalName(), uas.getClassValidAnnotators().get(0).getClassName());
+			assertEquals(MiriamType.HGNC, uas.getClassValidAnnotators().get(0).getValidMiriamTypes().get(0));
+			assertEquals(MiriamType.HGNC_SYMBOL, uas.getClassValidAnnotators().get(0).getValidMiriamTypes().get(1));
+
+			userDao.delete(user2);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/DataFormatter.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/DataFormatter.java
index b321d7e705..e356ed0072 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/DataFormatter.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/DataFormatter.java
@@ -10,10 +10,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import lcsb.mapviewer.annotation.services.MiriamConnector;
 import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
 import lcsb.mapviewer.reactome.model.ReactomeDatabaseObject;
 import lcsb.mapviewer.reactome.model.ReactomePhysicalEntity;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ElementUtil.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ElementUtil.java
index cfb4df2a77..d6a7c2f07b 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ElementUtil.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ElementUtil.java
@@ -12,8 +12,8 @@ import lcsb.mapviewer.annotation.services.annotators.ChebiAnnotator;
 import lcsb.mapviewer.annotation.services.annotators.ChebiSearchException;
 import lcsb.mapviewer.annotation.services.annotators.HgncAnnotator;
 import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ReactionComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ReactionComparator.java
index 0355531f6e..f15afd32f9 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ReactionComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ReactionComparator.java
@@ -7,11 +7,11 @@ import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.PhenotypeAlias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.ReactionNode;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
 import lcsb.mapviewer.reactome.model.ReactomeDatabaseObject;
 import lcsb.mapviewer.reactome.model.ReactomePhysicalEntity;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ComplexAndSimpleEntityComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ComplexAndSimpleEntityComparator.java
index ed6766fed3..30589675b7 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ComplexAndSimpleEntityComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ComplexAndSimpleEntityComparator.java
@@ -3,11 +3,11 @@ package lcsb.mapviewer.reactome.utils.comparators;
 import java.util.HashSet;
 import java.util.Set;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.ComplexAlias;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
 import lcsb.mapviewer.reactome.model.ReactomeReferenceEntity;
 import lcsb.mapviewer.reactome.model.ReactomeReferenceMolecule;
 import lcsb.mapviewer.reactome.model.ReactomeSimpleEntity;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/DegradedAndEntityWithAccessionedSequenceComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/DegradedAndEntityWithAccessionedSequenceComparator.java
index 1b3710a693..5562adf399 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/DegradedAndEntityWithAccessionedSequenceComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/DegradedAndEntityWithAccessionedSequenceComparator.java
@@ -1,7 +1,7 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
 import lcsb.mapviewer.model.map.layout.alias.DegradedAlias;
-import lcsb.mapviewer.model.map.species.Degraded;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
 
 /**
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/DrugAndCatalystComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/DrugAndCatalystComparator.java
index de0b223f9b..9aa4d9a618 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/DrugAndCatalystComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/DrugAndCatalystComparator.java
@@ -2,8 +2,8 @@ package lcsb.mapviewer.reactome.utils.comparators;
 
 import org.apache.log4j.Logger;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
 import lcsb.mapviewer.model.map.layout.alias.DrugAlias;
-import lcsb.mapviewer.model.map.species.Drug;
 import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
 
 /**
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/GeneAndDefinedSetComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/GeneAndDefinedSetComparator.java
index c739522629..29897ec770 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/GeneAndDefinedSetComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/GeneAndDefinedSetComparator.java
@@ -2,8 +2,8 @@ package lcsb.mapviewer.reactome.utils.comparators;
 
 import org.apache.log4j.Logger;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
-import lcsb.mapviewer.model.map.species.Gene;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
 
 /**
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/GeneAndOtherEntityComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/GeneAndOtherEntityComparator.java
index 4ece8e2ef0..394d3051ef 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/GeneAndOtherEntityComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/GeneAndOtherEntityComparator.java
@@ -1,7 +1,7 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
 import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
-import lcsb.mapviewer.model.map.species.Gene;
 import lcsb.mapviewer.reactome.model.ReactomeOtherEntity;
 
 import org.apache.log4j.Logger;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndCatalystComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndCatalystComparator.java
index 2e578b812c..d13b28ace0 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndCatalystComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndCatalystComparator.java
@@ -1,8 +1,8 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
 import lcsb.mapviewer.model.map.layout.alias.IonAlias;
-import lcsb.mapviewer.model.map.species.Ion;
 import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndComplexComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndComplexComparator.java
index b8271459f7..773e5130f2 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndComplexComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndComplexComparator.java
@@ -4,9 +4,9 @@ import java.util.List;
 
 import lcsb.mapviewer.annotation.services.annotators.ChebiSearchException;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.IonAlias;
-import lcsb.mapviewer.model.map.species.Ion;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndDefinedSetComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndDefinedSetComparator.java
index 0caa0ffe90..057f32b4e2 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndDefinedSetComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndDefinedSetComparator.java
@@ -1,8 +1,8 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
 import lcsb.mapviewer.model.map.layout.alias.IonAlias;
-import lcsb.mapviewer.model.map.species.Ion;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndEntityWithAccessionedSequenceComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndEntityWithAccessionedSequenceComparator.java
index 871429bf1d..ccfdc73c01 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndEntityWithAccessionedSequenceComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndEntityWithAccessionedSequenceComparator.java
@@ -1,7 +1,7 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
 import lcsb.mapviewer.model.map.layout.alias.IonAlias;
-import lcsb.mapviewer.model.map.species.Ion;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
 
 /**
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndSimpleEntityComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndSimpleEntityComparator.java
index 2bfcd947f6..fc671bff37 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndSimpleEntityComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/IonAndSimpleEntityComparator.java
@@ -4,9 +4,9 @@ import java.util.List;
 import java.util.Set;
 
 import lcsb.mapviewer.annotation.services.annotators.ChebiSearchException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.IonAlias;
-import lcsb.mapviewer.model.map.species.Ion;
 import lcsb.mapviewer.reactome.model.ReactomeSimpleEntity;
 import lcsb.mapviewer.reactome.utils.ComparatorException;
 
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MatchResult.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MatchResult.java
index ffa4d378d1..730e0b08f4 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MatchResult.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MatchResult.java
@@ -5,9 +5,9 @@ import java.util.List;
 
 import org.apache.log4j.Logger;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.reactome.model.ReactomeDatabaseObject;
 import lcsb.mapviewer.reactome.model.ReactomeReactionlikeEvent;
 
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndCatalystComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndCatalystComparator.java
index c01ede4f8e..8f3a22a1aa 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndCatalystComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndCatalystComparator.java
@@ -1,8 +1,8 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndComplexComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndComplexComparator.java
index 20e3484717..0692c746ce 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndComplexComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndComplexComparator.java
@@ -2,9 +2,9 @@ package lcsb.mapviewer.reactome.utils.comparators;
 
 import lcsb.mapviewer.annotation.services.annotators.ChebiSearchException;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndDefinedSetComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndDefinedSetComparator.java
index e889654e18..746163c93f 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndDefinedSetComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndDefinedSetComparator.java
@@ -1,8 +1,8 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndEntityWithAccessionedSequenceComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndEntityWithAccessionedSequenceComparator.java
index 842e30f390..bd267ad0df 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndEntityWithAccessionedSequenceComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndEntityWithAccessionedSequenceComparator.java
@@ -1,7 +1,7 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
 
 /**
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndSimpleEntityComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndSimpleEntityComparator.java
index 6621dca93a..65f000e50f 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndSimpleEntityComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/MoleculeAndSimpleEntityComparator.java
@@ -4,9 +4,9 @@ import java.util.List;
 import java.util.Set;
 
 import lcsb.mapviewer.annotation.services.annotators.ChebiSearchException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.SimpleMoleculeAlias;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import lcsb.mapviewer.reactome.model.ReactomeSimpleEntity;
 import lcsb.mapviewer.reactome.utils.ComparatorException;
 
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/NodeComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/NodeComparator.java
index 96ec98a48a..290fabe72a 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/NodeComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/NodeComparator.java
@@ -6,9 +6,9 @@ import java.util.Map;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.persist.SpringApplicationContext;
 import lcsb.mapviewer.reactome.model.ReactomeDatabaseObject;
 import lcsb.mapviewer.reactome.utils.ComparatorException;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndCandidateSetComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndCandidateSetComparator.java
index 33d87198fd..0f5e16047a 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndCandidateSetComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndCandidateSetComparator.java
@@ -4,8 +4,8 @@ import java.util.HashSet;
 import java.util.Set;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeCandidateSet;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndCatalystComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndCatalystComparator.java
index a9485d3662..87e47f4d2d 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndCatalystComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndCatalystComparator.java
@@ -1,8 +1,8 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeCandidateSet;
 import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndComplexComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndComplexComparator.java
index 6c25ff64cc..13d5a90f66 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndComplexComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndComplexComparator.java
@@ -5,10 +5,10 @@ import java.util.Set;
 
 import org.apache.log4j.Logger;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.utils.ComparatorException;
 
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndDefinedSetComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndDefinedSetComparator.java
index 574e97672c..36d9b30bfd 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndDefinedSetComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndDefinedSetComparator.java
@@ -1,8 +1,8 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndEntityWithAccessionedSequenceComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndEntityWithAccessionedSequenceComparator.java
index c2be3f4611..5ec9507444 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndEntityWithAccessionedSequenceComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndEntityWithAccessionedSequenceComparator.java
@@ -5,10 +5,10 @@ import java.util.Set;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
 import lcsb.mapviewer.reactome.model.ReactomeReferenceEntity;
 import lcsb.mapviewer.reactome.model.ReactomeReferenceGeneProduct;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndGenomeEncodedEntity.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndGenomeEncodedEntity.java
index d9c0066728..0d8b91ae44 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndGenomeEncodedEntity.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndGenomeEncodedEntity.java
@@ -2,8 +2,8 @@ package lcsb.mapviewer.reactome.utils.comparators;
 
 import org.apache.log4j.Logger;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeGenomeEncodedEntity;
 
 /**
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndOtherEntityComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndOtherEntityComparator.java
index 4682b93e6b..e65d79b6fb 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndOtherEntityComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndOtherEntityComparator.java
@@ -2,8 +2,8 @@ package lcsb.mapviewer.reactome.utils.comparators;
 
 import org.apache.log4j.Logger;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeOtherEntity;
 
 /**
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndPolymerComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndPolymerComparator.java
index f18d40805c..9a3f909753 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndPolymerComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndPolymerComparator.java
@@ -5,10 +5,10 @@ import java.util.List;
 import java.util.Set;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeComplex;
 import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
 import lcsb.mapviewer.reactome.model.ReactomeEntityWithAccessionedSequence;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndSimpleEntityComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndSimpleEntityComparator.java
index 1c8c70d0e2..997349c0ec 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndSimpleEntityComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/ProteinAndSimpleEntityComparator.java
@@ -1,7 +1,7 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.reactome.model.ReactomeSimpleEntity;
 
 /**
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/UnknownAndCatalystComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/UnknownAndCatalystComparator.java
index 3170fe8459..6a4d62232f 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/UnknownAndCatalystComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/UnknownAndCatalystComparator.java
@@ -1,8 +1,8 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.model.map.layout.alias.UnknownAlias;
-import lcsb.mapviewer.model.map.species.Unknown;
 import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
 import lcsb.mapviewer.reactome.model.ReactomeGenomeEncodedEntity;
 import lcsb.mapviewer.reactome.model.ReactomePhysicalEntity;
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/UnknownAndGenomeEncodedEntityComparator.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/UnknownAndGenomeEncodedEntityComparator.java
index efd684fa11..5daaf4ad10 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/UnknownAndGenomeEncodedEntityComparator.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/comparators/UnknownAndGenomeEncodedEntityComparator.java
@@ -1,7 +1,7 @@
 package lcsb.mapviewer.reactome.utils.comparators;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.model.map.layout.alias.UnknownAlias;
-import lcsb.mapviewer.model.map.species.Unknown;
 import lcsb.mapviewer.reactome.model.ReactomeGenomeEncodedEntity;
 
 /**
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/DataMiningService.java b/service/src/main/java/lcsb/mapviewer/services/impl/DataMiningService.java
index 6fdfc8fdaf..7b10d88a22 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/DataMiningService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/DataMiningService.java
@@ -25,8 +25,8 @@ import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.log.LogType;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.graph.DataMining;
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ExporterService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ExporterService.java
index f8fda6c140..33000680fe 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ExporterService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ExporterService.java
@@ -17,10 +17,25 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.converter.model.celldesigner.reaction.ReactionLineData;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.RnaRegion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.ArtifitialCompartmentAlias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
@@ -32,21 +47,6 @@ import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.ReactionNode;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.Unknown;
-import lcsb.mapviewer.model.map.species.fields.AntisenseRnaRegion;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
-import lcsb.mapviewer.model.map.species.fields.RnaRegion;
 import lcsb.mapviewer.services.interfaces.IExporterService;
 import lcsb.mapviewer.services.utils.data.ExportColumn;
 import lcsb.mapviewer.services.utils.data.ExportFileType;
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java
index 66297481ef..97bc8dd86b 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java
@@ -1,976 +1,976 @@
-package lcsb.mapviewer.services.impl;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.mail.MessagingException;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-
-import lcsb.mapviewer.annotation.services.MiriamConnector;
-import lcsb.mapviewer.commands.ColorModelCommand;
-import lcsb.mapviewer.commands.CommandExecutionException;
-import lcsb.mapviewer.commands.CopyCommand;
-import lcsb.mapviewer.common.IProgressUpdater;
-import lcsb.mapviewer.common.Pair;
-import lcsb.mapviewer.common.TextFileUtils;
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.common.exception.InvalidStateException;
-import lcsb.mapviewer.converter.graphics.MapGenerator;
-import lcsb.mapviewer.converter.graphics.MapGenerator.MapGeneratorParams;
-import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.cache.UploadedFileEntry;
-import lcsb.mapviewer.model.log.LogType;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.layout.GeneVariation;
-import lcsb.mapviewer.model.map.layout.GeneVariationColorSchema;
-import lcsb.mapviewer.model.map.layout.GenericColorSchema;
-import lcsb.mapviewer.model.map.layout.InvalidColorSchemaException;
-import lcsb.mapviewer.model.map.layout.Layout;
-import lcsb.mapviewer.model.map.layout.LayoutStatus;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
-import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.user.ObjectPrivilege;
-import lcsb.mapviewer.model.user.PrivilegeType;
-import lcsb.mapviewer.model.user.User;
-import lcsb.mapviewer.persist.DbUtils;
-import lcsb.mapviewer.persist.dao.map.LayoutDao;
-import lcsb.mapviewer.services.interfaces.IConfigurationService;
-import lcsb.mapviewer.services.interfaces.ILayoutService;
-import lcsb.mapviewer.services.interfaces.ILogService;
-import lcsb.mapviewer.services.interfaces.ILogService.LogParams;
-import lcsb.mapviewer.services.interfaces.IUserService;
-import lcsb.mapviewer.services.search.layout.FullLayoutAliasView;
-import lcsb.mapviewer.services.search.layout.FullLayoutAliasViewFactory;
-import lcsb.mapviewer.services.search.layout.LightLayoutAliasView;
-import lcsb.mapviewer.services.search.layout.LightLayoutAliasViewFactory;
-import lcsb.mapviewer.services.search.layout.LightLayoutReactionView;
-import lcsb.mapviewer.services.search.layout.LightLayoutReactionViewFactory;
-import lcsb.mapviewer.services.utils.ColorSchemaReader;
-import lcsb.mapviewer.services.utils.EmailSender;
-import lcsb.mapviewer.services.utils.data.ColorSchemaColumn;
-import lcsb.mapviewer.services.view.LayoutView;
-import lcsb.mapviewer.services.view.LayoutViewFactory;
-
-/**
- * Implementation of the layout service.
- * 
- * @author Piotr Gawron
- * 
- */
-@Transactional(value = "txManager")
-public class LayoutService implements ILayoutService {
-
-	/**
-	 * Default class logger.
-	 */
-	private Logger								logger = Logger.getLogger(LayoutService.class);
-
-	/**
-	 * Layout data access object.
-	 */
-	@Autowired
-	private LayoutDao							layoutDao;
-
-	/**
-	 * Factory object used for creation of {@link LayoutView} elements.
-	 */
-	@Autowired
-	private LayoutViewFactory			layoutViewFactory;
-
-	/**
-	 * Service that manages and gives access to user information.
-	 */
-	@Autowired
-	private IUserService					userService;
-
-	/**
-	 * Service used to access logs.
-	 * 
-	 * @see ILogService
-	 */
-	@Autowired
-	private ILogService						logService;
-
-	/**
-	 * Service that manages and gives access to configuration parameters.
-	 */
-	@Autowired
-	private IConfigurationService	configurationService;
-
-	/**
-	 * Utils that help to manage the sessions in custom multithreaded
-	 * implementation.
-	 */
-	@Autowired
-	private DbUtils								dbUtils;
-
-	@Override
-	public boolean userCanAddLayout(Model model, User user) {
-		// if we don't have privileges to view the object then we cannot add layouts
-		if (!userService.userHasPrivilege(user, PrivilegeType.VIEW_PROJECT, model.getProject())) {
-			return false;
-		}
-		long count = getAvailableCustomLayoutsNumber(user);
-		return count > 0;
-	}
-
-	@Override
-	public long getAvailableCustomLayoutsNumber(User user) {
-		long level = userService.getUserPrivilegeLevel(user, PrivilegeType.CUSTOM_LAYOUTS);
-		long layouts = layoutDao.getCountByUser(user);
-		return level - layouts;
-
-	}
-
-	@Override
-	public boolean userCanRemoveLayout(LayoutView layout, User user) {
-		Layout originalLayout = layoutDao.getById(layout.getIdObject());
-		User creator = originalLayout.getCreator();
-		Project project = originalLayout.getModel().getProject();
-		if (creator == null) {
-			return userService.userHasPrivilege(user, PrivilegeType.LAYOUT_MANAGEMENT, project);
-		} else {
-			return creator.getId().equals(user.getId()) || userService.userHasPrivilege(user, PrivilegeType.LAYOUT_MANAGEMENT, project);
-		}
-	}
-
-	@Override
-	public List<LayoutView> getCustomLayouts(Model model, User user) {
-		List<LayoutView> result = new ArrayList<LayoutView>();
-		if (model == null || user == null) {
-			return result;
-		}
-		List<Layout> layouts = layoutDao.getLayoutsByModel(model);
-		for (Layout layout : layouts) {
-			if (!layout.isPublicLayout() && layout.getCreator() != null) {
-				if (layout.getCreator().getLogin().equals(user.getLogin())) {
-					result.add(layoutViewFactory.create(layout));
-				} else if (userService.userHasPrivilege(user, PrivilegeType.LAYOUT_VIEW, layout)) {
-					result.add(layoutViewFactory.create(layout));
-				}
-			}
-		}
-		Collections.sort(result, LayoutView.ID_COMPARATOR);
-		return result;
-	}
-
-	@Override
-	public List<LayoutView> getGeneralLayouts(Model model) {
-		List<LayoutView> result = new ArrayList<LayoutView>();
-		if (model == null) {
-			return result;
-		}
-		List<Layout> layouts = layoutDao.getLayoutsByModel(model);
-		for (Layout layout : layouts) {
-			if (layout.isPublicLayout()) {
-				result.add(layoutViewFactory.create(layout));
-			}
-		}
-		Collections.sort(result, LayoutView.ID_COMPARATOR);
-		return result;
-	}
-
-	@Override
-	public void removeLayout(LayoutView layout, final String homeDir) throws IOException {
-		final String dir;
-		final Layout dbLayout = layoutDao.getById(layout.getIdObject());
-		if (homeDir != null) {
-			if (dbLayout.getModel().getProject().getDirectory() != null) {
-				dir = homeDir + "/../map_images/" + dbLayout.getModel().getProject().getDirectory() + "/";
-			} else {
-				dir = homeDir + "/../map_images/";
-			}
-		} else {
-			dir = null;
-		}
-
-		String projectId = dbLayout.getModel().getProject().getProjectId();
-		String email = null;
-		User user = dbLayout.getCreator();
-		if (user != null) {
-			email = user.getEmail();
-		}
-
-		dbLayout.getModel().removeLayout(dbLayout);
-		layoutDao.delete(dbLayout);
-
-		LogParams params = new LogParams().object(dbLayout).type(LogType.LAYOUT_REMOVED);
-		logService.log(params);
-
-		if (email != null) {
-			try {
-				sendSuccesfullRemoveEmail(projectId, layout.getName(), email);
-			} catch (MessagingException e) {
-				logger.error(e);
-			}
-		}
-		Thread computations = new Thread(new Runnable() {
-			@Override
-			public void run() {
-				MapGenerator generator = new MapGenerator();
-				try {
-					generator.removeLayout(dbLayout, dir);
-				} catch (IOException e) {
-					logger.error(e);
-				}
-
-			}
-		});
-		computations.start();
-	}
-
-	@Override
-	public void updateLayout(LayoutView layout) {
-		Layout dbLayout = layoutDao.getById(layout.getIdObject());
-		dbLayout.setTitle(layout.getName());
-		dbLayout.setDescription(layout.getDescription());
-		if (layout.getCreator().isEmpty()) {
-			dbLayout.setCreator(null);
-			dbLayout.setPublicLayout(true);
-		} else {
-			User user = userService.getUserByNameSurname(layout.getCreator());
-			dbLayout.setCreator(user);
-			dbLayout.setPublicLayout(false);
-		}
-
-		layoutDao.update(dbLayout);
-	}
-
-	@Override
-	public void addViewPrivilegeToLayout(LayoutView layout, User user) {
-		ObjectPrivilege privilege = new ObjectPrivilege();
-		privilege.setIdObject(layout.getIdObject());
-		privilege.setLevel(1);
-		privilege.setType(PrivilegeType.LAYOUT_VIEW);
-		privilege.setUser(user);
-		userService.setUserPrivilege(user, privilege);
-	}
-
-	@Override
-	public void dropViewPrivilegeFromLayout(LayoutView layout, User user) {
-		ObjectPrivilege privilege = new ObjectPrivilege();
-		privilege.setIdObject(layout.getIdObject());
-		privilege.setLevel(0);
-		privilege.setType(PrivilegeType.LAYOUT_VIEW);
-		privilege.setUser(user);
-		userService.setUserPrivilege(user, privilege);
-	}
-
-	@Override
-	public LayoutView createLayoutWithImages(final CreateLayoutParams params) throws IOException, InvalidColorSchemaException, CommandExecutionException {
-		ColorSchemaReader reader = new ColorSchemaReader();
-		final Collection<ColorSchema> schemas = reader
-				.readColorSchema(params.getColorInputStream(), TextFileUtils.getHeaderParametersFromFile(params.getColorInputStream()));
-		final Model colorModel = new CopyCommand(params.getModel()).execute();
-		new ColorModelCommand(params.getModel(), schemas).execute();
-		final EmailSender sender = new EmailSender(configurationService);
-		String[] tmp = params.getDirectory().split("[\\\\/]");
-		String simpleDir = tmp[tmp.length - 1];
-
-		layoutDao.flush();
-
-		boolean customSession = false;
-		if (params.isAsync()) {
-			customSession = !dbUtils.isCustomSessionForCurrentThread();
-			if (customSession) {
-				dbUtils.createSessionForCurrentThread();
-			}
-		}
-		final Map<Model, Integer> layoutIdByModel = new HashMap<Model, Integer>();
-
-		Layout topLayout = new Layout(params.getName(), simpleDir, false);
-		if (params.getUser() == null) {
-			topLayout.setPublicLayout(true);
-		} else {
-			topLayout.setPublicLayout(false);
-		}
-		topLayout.setStatus(LayoutStatus.NA);
-		topLayout.setProgress(0.0);
-		UploadedFileEntry fileEntry = new UploadedFileEntry();
-		fileEntry.setFileContent(IOUtils.toByteArray(params.getColorInputStream()));
-		fileEntry.setOriginalFileName(params.getLayoutFileName());
-		topLayout.setInputData(fileEntry);
-		topLayout.setDescription(params.getDescription());
-		params.getModel().addLayout(topLayout);
-		topLayout.setCreator(params.getUser());
-		layoutDao.add(topLayout);
-		topLayout.setDirectory(simpleDir + topLayout.getId());
-
-		layoutDao.update(topLayout);
-
-		layoutIdByModel.put(colorModel, topLayout.getId());
-
-		for (ModelSubmodelConnection connection : params.getModel().getSubmodelConnections()) {
-			Layout layout = new Layout(params.getName(), simpleDir, false);
-			layout.setStatus(LayoutStatus.NA);
-			layout.setProgress(0.0);
-			connection.getSubmodel().getModel().addLayout(layout);
-			layout.setCreator(params.getUser());
-			layout.setPublicLayout(false);
-			topLayout.addLayout(layout);
-			layoutDao.add(layout);
-			layout.setDirectory(simpleDir + layout.getId());
-
-			layoutDao.update(layout);
-
-			layoutIdByModel.put(colorModel.getSubmodelByConnectionName(connection.getName()), layout.getId());
-		}
-
-		if (params.isAsync()) {
-			if (customSession) {
-				dbUtils.closeSessionForCurrentThread();
-			} else {
-				layoutDao.commit();
-			}
-		}
-		final int layoutId = layoutIdByModel.get(colorModel);
-
-		Thread computations = new Thread(new Runnable() {
-			@Override
-			public void run() {
-				if (params.isAsync()) {
-					// open transaction for this thread
-					dbUtils.createSessionForCurrentThread();
-				}
-
-				try {
-					MapGenerator generator = new MapGenerator();
-					final int models = layoutIdByModel.entrySet().size();
-
-					int count = 0;
-					for (Model m : layoutIdByModel.keySet()) {
-						final int counted = count;
-						int id = layoutIdByModel.get(m);
-						MapGeneratorParams imgParams = generator.new MapGeneratorParams().model(m).directory(params.getDirectory() + id).updater(new IProgressUpdater() {
-							private int lastProgress = -1;
-
-							@Override
-							public void setProgress(double progress) {
-								progress = progress / ((double) models) + ((double) counted * MAX_PROGRESS) / ((double) models);
-								if (((int) progress) != lastProgress) {
-									Layout layout = layoutDao.getById(layoutId);
-									lastProgress = (int) progress;
-									layout.setProgress(progress);
-									layout.setStatus(LayoutStatus.GENERATING);
-									layoutDao.update(layout);
-									if (params.isAsync()) {
-										layoutDao.commit();
-									}
-								}
-							}
-						});
-						generator.generateMapImages(imgParams);
-						count++;
-					}
-					Layout layout = layoutDao.getById(layoutId);
-					layout.setProgress(IProgressUpdater.MAX_PROGRESS);
-					layout.setStatus(LayoutStatus.OK);
-					layoutDao.update(layout);
-					if (params.isAsync()) {
-						layoutDao.commit();
-					}
-
-					try {
-						sendSuccessfullGenerationEmail(params, schemas);
-					} catch (MessagingException e) {
-						logger.error("Problem with sending email", e);
-					}
-					logService.log(new LogParams().object(layout).description("Created successfully.").type(LogType.LAYOUT_CREATED));
-				} catch (Exception e) {
-					logger.error("Problem with creating layout", e);
-
-					Layout layout = layoutDao.getById(layoutId);
-					layout.setProgress(IProgressUpdater.MAX_PROGRESS);
-					layout.setStatus(LayoutStatus.FAILURE);
-					layoutDao.update(layout);
-
-					try {
-						sender.sendEmail(
-								"MapViewer status", "There was a problem with generating layout " + params.getName() + ". Contact administrator to solve this issue.",
-								params.getUser());
-					} catch (MessagingException e1) {
-						logger.error("Problem with sending email", e1);
-					}
-					logService.log(new LogParams().object(layout).description("Problem during creation.").type(LogType.LAYOUT_CREATED));
-				}
-				if (params.isAsync()) {
-					// close the transaction for this thread
-					dbUtils.closeSessionForCurrentThread();
-				}
-			}
-		});
-
-		if (params.isAsync()) {
-			computations.start();
-		} else {
-			computations.run();
-		}
-		return layoutViewFactory.create(topLayout);
-	}
-
-	@Override
-	public LayoutView createLayout(final CreateLayoutParams params) throws IOException, InvalidColorSchemaException {
-		ColorSchemaReader reader = new ColorSchemaReader();
-		final Collection<ColorSchema> schemas = reader
-				.readColorSchema(params.getColorInputStream(), TextFileUtils.getHeaderParametersFromFile(params.getColorInputStream()));
-
-		// check if we can color our model using this schema,
-		// if not then exception will be thrown and passed up
-		try {
-			new ColorModelCommand(params.getModel(), schemas).execute();
-		} catch (CommandExecutionException e) {
-			throw new InvalidColorSchemaException(e);
-		}
-
-		String[] tmp = params.getDirectory().split("[\\\\/]");
-		String simpleDir = tmp[tmp.length - 1];
-
-		layoutDao.flush();
-
-		boolean customSession = false;
-
-		if (params.isAsync()) {
-			customSession = !dbUtils.isCustomSessionForCurrentThread();
-			if (customSession) {
-				dbUtils.createSessionForCurrentThread();
-			}
-		}
-
-		Layout topLayout = new Layout(params.getName(), simpleDir, false);
-		if (params.getUser() == null) {
-			topLayout.setPublicLayout(true);
-		} else {
-			topLayout.setPublicLayout(false);
-		}
-		topLayout.setStatus(LayoutStatus.OK);
-		topLayout.setProgress(0.0);
-		UploadedFileEntry fileEntry = new UploadedFileEntry();
-		fileEntry.setFileContent(IOUtils.toByteArray(params.getColorInputStream()));
-		fileEntry.setOriginalFileName(params.getLayoutFileName());
-		topLayout.setInputData(fileEntry);
-		topLayout.setDescription(params.getDescription());
-		params.getModel().addLayout(topLayout);
-		topLayout.setCreator(params.getUser());
-		layoutDao.add(topLayout);
-		topLayout.setDirectory(simpleDir + topLayout.getId());
-
-		layoutDao.update(topLayout);
-
-		for (ModelSubmodelConnection connection : params.getModel().getSubmodelConnections()) {
-			Layout layout = new Layout(params.getName(), simpleDir, false);
-			layout.setStatus(LayoutStatus.OK);
-			layout.setProgress(0.0);
-			connection.getSubmodel().getModel().addLayout(layout);
-			layout.setCreator(params.getUser());
-			layout.setPublicLayout(false);
-			topLayout.addLayout(layout);
-			layoutDao.add(layout);
-			layout.setDirectory(simpleDir + layout.getId());
-
-			layoutDao.update(layout);
-		}
-
-		if (params.isAsync()) {
-			if (customSession) {
-				dbUtils.closeSessionForCurrentThread();
-			} else {
-				layoutDao.commit();
-			}
-		}
-		Thread computations = new Thread(new Runnable() {
-			@Override
-			public void run() {
-				if (params.isAsync()) {
-					// open transaction for this thread
-					dbUtils.createSessionForCurrentThread();
-				}
-
-				try {
-					sendSuccessfullGenerationEmail(params, schemas);
-				} catch (MessagingException e) {
-					logger.error("Problem with sending email", e);
-				}
-
-				if (params.isAsync()) {
-					// close the transaction for this thread
-					dbUtils.closeSessionForCurrentThread();
-				}
-			}
-		});
-
-		LogParams logParams = new LogParams().object(topLayout).description("Created successfully.").type(LogType.LAYOUT_CREATED);
-		logService.log(logParams);
-
-		if (params.isAsync()) {
-			computations.start();
-		} else {
-			computations.run();
-		}
-		return layoutViewFactory.create(topLayout);
-	}
-
-	/**
-	 * @return the configurationService
-	 * @see #configurationService
-	 */
-	public IConfigurationService getConfigurationService() {
-		return configurationService;
-	}
-
-	/**
-	 * @param configurationService
-	 *          the configurationService to set
-	 * @see #configurationService
-	 */
-	public void setConfigurationService(IConfigurationService configurationService) {
-		this.configurationService = configurationService;
-	}
-
-	/**
-	 * @return the dbUtils
-	 * @see #dbUtils
-	 */
-	public DbUtils getDbUtils() {
-		return dbUtils;
-	}
-
-	/**
-	 * @param dbUtils
-	 *          the dbUtils to set
-	 * @see #dbUtils
-	 */
-	public void setDbUtils(DbUtils dbUtils) {
-		this.dbUtils = dbUtils;
-	}
-
-	/**
-	 * @return the userService
-	 * @see #userService
-	 */
-	public IUserService getUserService() {
-		return userService;
-	}
-
-	/**
-	 * @param userService
-	 *          the userService to set
-	 * @see #userService
-	 */
-	public void setUserService(IUserService userService) {
-		this.userService = userService;
-	}
-
-	@Override
-	public LayoutView getLayoutByName(Model model, String name) {
-		if (model == null) {
-			return null;
-		}
-		Layout layout = layoutDao.getLayoutByName(model, name);
-		if (layout != null) {
-			return layoutViewFactory.create(layout);
-		} else {
-			return null;
-		}
-	}
-
-	/**
-	 * Sends notification email that layout was removed.
-	 * 
-	 * @param projectId
-	 *          identifier of the project
-	 * @param layoutName
-	 *          name of the layout
-	 * @param email
-	 *          otification email
-	 * @throws MessagingException
-	 *           thrown when there is a problem with sending email
-	 */
-	protected void sendSuccesfullRemoveEmail(String projectId, String layoutName, String email) throws MessagingException {
-		EmailSender emailSender = new EmailSender(configurationService);
-		StringBuilder content = new StringBuilder("Layout " + layoutName + " in map " + projectId + " was successfully removed.<br/>");
-		emailSender.sendEmail("MapViewer notification", content.toString(), email);
-	}
-
-	/**
-	 * Sends notification email that layout was generated.
-	 * 
-	 * @param params
-	 *          list of {@link CreateLayoutParams params} used for layout creation
-	 * @param schemas
-	 *          set of schemas used in coloring
-	 * @throws MessagingException
-	 *           thrown when there is a problem with sending email
-	 */
-	protected void sendSuccessfullGenerationEmail(final CreateLayoutParams params, final Collection<ColorSchema> schemas) throws MessagingException {
-		EmailSender emailSender = new EmailSender(configurationService);
-		StringBuilder content = new StringBuilder("Layout " + params.getName() + " generated successfully.\n");
-		content.append("Result of coloring:<br/>");
-
-		String table = prepareTableResult(schemas, new ColorSchemaReader());
-		content.append(table);
-		if (params.getUser() != null) { // send email to a user who owns the layout
-			emailSender.sendEmail("MapViewer notification", content.toString(), params.getUser());
-
-			// send email to the model owner
-			String email = params.getModel().getNotifyEmail();
-			if (email != null && !email.equals(params.getUser().getEmail())) {
-				content = new StringBuilder("");
-				String username = "UNKNOWN";
-				if (params.getUser() != null) {
-					username = params.getUser().getLogin();
-				}
-				content.append("User " + username + " created layout in " + params.getModel().getProject().getProjectId() + " map.");
-
-				emailSender.sendEmail("MapViewer notification", content.toString(), email);
-			}
-		} else if (params.getModel().getNotifyEmail() != null) {
-			// if nobody owns the layout then send it to the model owner
-			emailSender.sendEmail("MapViewer notification", content.toString(), params.getModel().getNotifyEmail());
-		}
-	}
-
-	/**
-	 * Prepares table with statistics about coloring.
-	 * 
-	 * @param schemas
-	 *          schemas that were used for coloring
-	 * @param scr
-	 *          interface that returns list of columns that should be printed
-	 * @return table with statistics about coloring
-	 */
-	protected String prepareTableResult(Collection<ColorSchema> schemas, ColorSchemaReader scr) {
-		StringBuilder sb = new StringBuilder("");
-
-		Collection<ColorSchemaColumn> columns = scr.getSetColorSchemaColumns(schemas);
-
-		for (ColorSchemaColumn column : ColorSchemaColumn.values()) {
-			if (columns.contains(column)) {
-				sb.append(column.getTitle() + "\t");
-			}
-		}
-		sb.append("matches<br/>\n");
-
-		for (ColorSchema originalSchema : schemas) {
-			for (ColorSchema schema : splitColorSchema(originalSchema)) {
-				sb.append(prepareTableRow(columns, schema));
-			}
-		}
-
-		return sb.toString();
-	}
-
-	/**
-	 * {@link ColorSchema} sometimes contains merged value from few rows. This
-	 * method split single {@link ColorSchema} object to simple flat objects that
-	 * can be serialiazed in a simple tab separated file.
-	 * 
-	 * @param originalSchema
-	 *          original {@link ColorSchema} objcet that we want to spli into flat
-	 *          objects
-	 * @return {@link List} of flat schema objects obtained from input
-	 */
-	private List<ColorSchema> splitColorSchema(ColorSchema originalSchema) {
-		List<ColorSchema> result = new ArrayList<>();
-		if (originalSchema instanceof GenericColorSchema) {
-			result.add(originalSchema);
-		} else if (originalSchema instanceof GeneVariationColorSchema) {
-			for (GeneVariation gv : ((GeneVariationColorSchema) originalSchema).getGeneVariations()) {
-				GeneVariationColorSchema copy = (GeneVariationColorSchema) originalSchema.copy();
-				copy.getGeneVariations().clear();
-				copy.addGeneVariation(gv.copy());
-				result.add(copy);
-			}
-		} else {
-			throw new InvalidArgumentException("Unknown class type: " + originalSchema.getClass());
-		}
-		return result;
-	}
-
-	/**
-	 * Prepares tab separated {@link String} represenation of {@link ColorSchema}.
-	 * 
-	 * @param columns
-	 *          columns that should be outputed in the result String
-	 * @param schema
-	 *          input ColorSchema that is going to be transformed into String
-	 *          representation
-	 * @return tab separated {@link String} represenation of {@link ColorSchema}
-	 */
-	protected String prepareTableRow(Collection<ColorSchemaColumn> columns, ColorSchema schema) {
-		StringBuilder sb = new StringBuilder();
-		for (ColorSchemaColumn column : ColorSchemaColumn.values()) {
-			if (columns.contains(column)) {
-				if (schema instanceof GenericColorSchema) {
-					sb.append(prepareTableCellForGenericSchema((GenericColorSchema) schema, column));
-				} else if (schema instanceof GeneVariationColorSchema) {
-					sb.append(prepareTableCellForGeneVariationSchema((GeneVariationColorSchema) schema, column));
-				} else {
-					throw new InvalidArgumentException("Unknown schema type: " + schema.getClass());
-				}
-			}
-		}
-		sb.append(schema.getMatches() + "<br/>\n");
-		return sb.toString();
-	}
-
-	/**
-	 * Returns String representing data of {@link GenericColorSchema} that should
-	 * appear in a given {@link ColorSchemaColumn}.
-	 * 
-	 * @param schema
-	 *          object for which data will be returned
-	 * @param column
-	 *          column for which data should be returned
-	 * @return {@link String} representing data of {@link GenericColorSchema} that
-	 *         should appear in a given {@link ColorSchemaColumn}
-	 */
-	protected String prepareTableCellForGenericSchema(GenericColorSchema schema, ColorSchemaColumn column) {
-		StringBuilder sb = new StringBuilder();
-		if (column.equals(ColorSchemaColumn.COLOR)) {
-			if (schema.getColor() != null) {
-				sb.append("#" + Integer.toHexString(schema.getColor().getRGB()).substring(2).toUpperCase());
-			}
-			sb.append("\t");
-		} else if (column.equals(ColorSchemaColumn.NAME)) {
-			sb.append(schema.getName() + "\t");
-		} else if (column.equals(ColorSchemaColumn.VALUE)) {
-			sb.append(schema.getValue() + "\t");
-		} else if (column.equals(ColorSchemaColumn.COMPARTMENT)) {
-			for (String str : schema.getCompartments()) {
-				sb.append(str + ", ");
-			}
-			sb.append("\t");
-		} else if (column.equals(ColorSchemaColumn.TYPE)) {
-			for (Class<? extends Species> str : schema.getTypes()) {
-				sb.append(str.getSimpleName() + ", ");
-			}
-			sb.append("\t");
-		} else if (column.equals(ColorSchemaColumn.IDENTIFIER)) {
-			for (Pair<MiriamType, String> pair : schema.getIdentifierColumns()) {
-				if (pair.getRight() != null && !pair.getRight().trim().equals("")) {
-					sb.append(pair.getLeft().getCommonName() + ": " + pair.getRight() + ", ");
-				}
-			}
-			sb.append("\t");
-		} else if (column.equals(ColorSchemaColumn.REACTION_IDENTIFIER)) {
-			sb.append(schema.getReactionIdentifier() + "\t");
-		} else if (column.equals(ColorSchemaColumn.LINE_WIDTH)) {
-			sb.append(schema.getLineWidth() + "\t");
-		} else if (column.equals(ColorSchemaColumn.REVERSE_REACTION)) {
-			sb.append(schema.getReverseReaction() + "\t");
-		} else if (column.equals(ColorSchemaColumn.POSITION)) {
-			sb.append(schema.getReverseReaction() + "\t");
-		} else if (column.equals(ColorSchemaColumn.DESCRIPTION)) {
-			sb.append(schema.getDescription() + "\t");
-		} else {
-			throw new InvalidArgumentException("Unknown column type: " + column + " for schema type: " + schema.getClass());
-		}
-		return sb.toString();
-	}
-
-	/**
-	 * Returns String representing data of {@link GeneVariationColorSchema} that
-	 * should appear in a given {@link ColorSchemaColumn}.
-	 * 
-	 * @param schema
-	 *          object for which data will be returned
-	 * @param column
-	 *          column for which data should be returned
-	 * @return {@link String} representing data of
-	 *         {@link GeneVariationColorSchema} that should appear in a given
-	 *         {@link ColorSchemaColumn}
-	 */
-	protected String prepareTableCellForGeneVariationSchema(GeneVariationColorSchema schema, ColorSchemaColumn column) {
-		StringBuilder sb = new StringBuilder();
-		if (column.equals(ColorSchemaColumn.COLOR)) {
-			if (schema.getColor() != null) {
-				sb.append("#" + Integer.toHexString(schema.getColor().getRGB()).substring(2).toUpperCase());
-			}
-			sb.append("\t");
-		} else if (column.equals(ColorSchemaColumn.NAME)) {
-			sb.append(schema.getName() + "\t");
-		} else if (column.equals(ColorSchemaColumn.VALUE)) {
-			sb.append(schema.getValue() + "\t");
-		} else if (column.equals(ColorSchemaColumn.COMPARTMENT)) {
-			for (String str : schema.getCompartments()) {
-				sb.append(str + ", ");
-			}
-			sb.append("\t");
-		} else if (column.equals(ColorSchemaColumn.TYPE)) {
-			for (Class<? extends Species> str : schema.getTypes()) {
-				sb.append(str.getSimpleName() + ", ");
-			}
-			sb.append("\t");
-		} else if (column.equals(ColorSchemaColumn.IDENTIFIER)) {
-			for (Pair<MiriamType, String> pair : schema.getIdentifierColumns()) {
-				if (pair.getRight() != null && !pair.getRight().trim().equals("")) {
-					sb.append(pair.getLeft().getCommonName() + ": " + pair.getRight() + ", ");
-				}
-			}
-			sb.append("\t");
-		} else if (column.equals(ColorSchemaColumn.REACTION_IDENTIFIER)) {
-			sb.append(schema.getReactionIdentifier() + "\t");
-		} else if (column.equals(ColorSchemaColumn.LINE_WIDTH)) {
-			sb.append(schema.getLineWidth() + "\t");
-		} else if (column.equals(ColorSchemaColumn.REVERSE_REACTION)) {
-			sb.append(schema.getReverseReaction() + "\t");
-		} else if (column.equals(ColorSchemaColumn.POSITION)) {
-			sb.append(schema.getGeneVariations().get(0).getPosition() + "\t");
-		} else if (column.equals(ColorSchemaColumn.DESCRIPTION)) {
-			sb.append(schema.getDescription() + "\t");
-		} else if (column.equals(ColorSchemaColumn.ORIGINAL_DNA)) {
-			sb.append(schema.getGeneVariations().get(0).getOriginalDna() + "\t");
-		} else if (column.equals(ColorSchemaColumn.ALTERNATIVE_DNA)) {
-			sb.append(schema.getGeneVariations().get(0).getModifiedDna() + "\t");
-		} else if (column.equals(ColorSchemaColumn.REFERENCE_GENOME_TYPE)) {
-			sb.append(schema.getGeneVariations().get(0).getReferenceGenomeType() + "\t");
-		} else if (column.equals(ColorSchemaColumn.REFERENCE_GENOME_VERSION)) {
-			sb.append(schema.getGeneVariations().get(0).getReferenceGenomeVersion() + "\t");
-		} else if (column.equals(ColorSchemaColumn.CONTIG)) {
-			sb.append(schema.getGeneVariations().get(0).getContig() + "\t");
-		} else if (column.equals(ColorSchemaColumn.REFERENCES)) {
-			MiriamConnector mc = new MiriamConnector();
-			for (MiriamData md : schema.getGeneVariations().get(0).getReferences()) {
-				sb.append(mc.miriamDataToUri(md) + "\t");
-			}
-		} else {
-			throw new InvalidArgumentException("Unknown column type: " + column + " for schema type: " + schema.getClass());
-		}
-		return sb.toString();
-	}
-
-	@Override
-	public byte[] getInputDataForLayout(LayoutView layoutView) {
-		return getInputDataForLayout(layoutView.getIdObject());
-	}
-
-	/**
-	 * Returns byte array containing data from original input file that was used
-	 * to generate the layout.
-	 * 
-	 * @param layoutId
-	 *          identifier of layout for which we want to retrieve original file
-	 *          data
-	 * @return original data file for given layout, if such file is not stored in
-	 *         database (compatibility reasons) then null is returned
-	 */
-	private byte[] getInputDataForLayout(int layoutId) {
-		Layout layout = layoutDao.getById(layoutId);
-		if (layout == null) {
-			return null;
-		} else {
-			if (layout.getInputData() != null) {
-				return layout.getInputData().getFileContent();
-			} else {
-				return null;
-			}
-		}
-	}
-
-	@Override
-	public List<LightLayoutAliasView> getAliasesForLayout(Model model, int layoutId) {
-		try {
-			ColorSchemaReader reader = new ColorSchemaReader();
-			Collection<ColorSchema> schemas;
-			schemas = reader.readColorSchema(getInputDataForLayout(layoutId));
-			ColorModelCommand command = new ColorModelCommand(model, schemas);
-			LightLayoutAliasViewFactory factory = new LightLayoutAliasViewFactory();
-			List<LightLayoutAliasView> result = new ArrayList<>();
-			for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) {
-				if (entry.getKey() instanceof Alias) {
-					result.add(factory.create(new Pair<Alias, ColorSchema>((Alias) entry.getKey(), entry.getValue())));
-				}
-			}
-			return result;
-		} catch (InvalidColorSchemaException e) {
-			throw new InvalidStateException(e);
-		} catch (IOException e) {
-			throw new InvalidStateException(e);
-		}
-	}
-
-	@Override
-	public List<LightLayoutReactionView> getReactionsForLayout(Model model, int layoutId) {
-		try {
-			ColorSchemaReader reader = new ColorSchemaReader();
-			Collection<ColorSchema> schemas;
-			schemas = reader.readColorSchema(getInputDataForLayout(layoutId));
-			ColorModelCommand command = new ColorModelCommand(model, schemas);
-			LightLayoutReactionViewFactory factory = new LightLayoutReactionViewFactory();
-			List<LightLayoutReactionView> result = new ArrayList<>();
-			for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) {
-				if (entry.getKey() instanceof Reaction) {
-					result.add(factory.create(new Pair<Reaction, ColorSchema>((Reaction) entry.getKey(), entry.getValue())));
-				}
-			}
-			return result;
-		} catch (InvalidColorSchemaException e) {
-			throw new InvalidStateException(e);
-		} catch (IOException e) {
-			throw new InvalidStateException(e);
-		}
-	}
-
-	@Override
-	public Map<Object, ColorSchema> getElementsForLayout(Model model, Integer layoutId) {
-		try {
-			ColorSchemaReader reader = new ColorSchemaReader();
-			Collection<ColorSchema> schemas;
-			schemas = reader.readColorSchema(getInputDataForLayout(layoutId));
-			ColorModelCommand command = new ColorModelCommand(model, schemas);
-			return command.getModifiedElements();
-		} catch (InvalidColorSchemaException e) {
-			throw new InvalidStateException(e);
-		} catch (IOException e) {
-			throw new InvalidStateException(e);
-		}
-	}
-
-	@Override
-	public List<FullLayoutAliasView> getFullAliasesForLayoutByIds(Model model, List<Pair<Integer, Integer>> identifiers, int layoutId) {
-		try {
-			Set<Integer> ids = new HashSet<>();
-			for (Pair<Integer, Integer> pair : identifiers) {
-				ids.add(pair.getRight());
-			}
-
-			ColorSchemaReader reader = new ColorSchemaReader();
-			Collection<ColorSchema> schemas;
-			schemas = reader.readColorSchema(getInputDataForLayout(layoutId));
-			ColorModelCommand command = new ColorModelCommand(model, schemas);
-			FullLayoutAliasViewFactory factory = new FullLayoutAliasViewFactory();
-			List<FullLayoutAliasView> result = new ArrayList<>();
-
-			// TODO poor performance, improve it
-			for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) {
-				if (entry.getKey() instanceof Alias) {
-					Alias alias = (Alias) entry.getKey();
-					if (ids.contains(alias.getId())) {
-						result.add(factory.create(new Pair<Alias, ColorSchema>(alias, entry.getValue())));
-					}
-				}
-			}
-			return result;
-		} catch (InvalidColorSchemaException e) {
-			throw new InvalidStateException(e);
-		} catch (IOException e) {
-			throw new InvalidStateException(e);
-		}
-	}
-}
+package lcsb.mapviewer.services.impl;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.mail.MessagingException;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+import lcsb.mapviewer.annotation.services.MiriamConnector;
+import lcsb.mapviewer.commands.ColorModelCommand;
+import lcsb.mapviewer.commands.CommandExecutionException;
+import lcsb.mapviewer.commands.CopyCommand;
+import lcsb.mapviewer.common.IProgressUpdater;
+import lcsb.mapviewer.common.Pair;
+import lcsb.mapviewer.common.TextFileUtils;
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.graphics.MapGenerator;
+import lcsb.mapviewer.converter.graphics.MapGenerator.MapGeneratorParams;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.model.Project;
+import lcsb.mapviewer.model.cache.UploadedFileEntry;
+import lcsb.mapviewer.model.log.LogType;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
+import lcsb.mapviewer.model.map.layout.ColorSchema;
+import lcsb.mapviewer.model.map.layout.GeneVariation;
+import lcsb.mapviewer.model.map.layout.GeneVariationColorSchema;
+import lcsb.mapviewer.model.map.layout.GenericColorSchema;
+import lcsb.mapviewer.model.map.layout.InvalidColorSchemaException;
+import lcsb.mapviewer.model.map.layout.Layout;
+import lcsb.mapviewer.model.map.layout.LayoutStatus;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+import lcsb.mapviewer.model.user.ObjectPrivilege;
+import lcsb.mapviewer.model.user.PrivilegeType;
+import lcsb.mapviewer.model.user.User;
+import lcsb.mapviewer.persist.DbUtils;
+import lcsb.mapviewer.persist.dao.map.LayoutDao;
+import lcsb.mapviewer.services.interfaces.IConfigurationService;
+import lcsb.mapviewer.services.interfaces.ILayoutService;
+import lcsb.mapviewer.services.interfaces.ILogService;
+import lcsb.mapviewer.services.interfaces.ILogService.LogParams;
+import lcsb.mapviewer.services.interfaces.IUserService;
+import lcsb.mapviewer.services.search.layout.FullLayoutAliasView;
+import lcsb.mapviewer.services.search.layout.FullLayoutAliasViewFactory;
+import lcsb.mapviewer.services.search.layout.LightLayoutAliasView;
+import lcsb.mapviewer.services.search.layout.LightLayoutAliasViewFactory;
+import lcsb.mapviewer.services.search.layout.LightLayoutReactionView;
+import lcsb.mapviewer.services.search.layout.LightLayoutReactionViewFactory;
+import lcsb.mapviewer.services.utils.ColorSchemaReader;
+import lcsb.mapviewer.services.utils.EmailSender;
+import lcsb.mapviewer.services.utils.data.ColorSchemaColumn;
+import lcsb.mapviewer.services.view.LayoutView;
+import lcsb.mapviewer.services.view.LayoutViewFactory;
+
+/**
+ * Implementation of the layout service.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Transactional(value = "txManager")
+public class LayoutService implements ILayoutService {
+
+	/**
+	 * Default class logger.
+	 */
+	private Logger								logger = Logger.getLogger(LayoutService.class);
+
+	/**
+	 * Layout data access object.
+	 */
+	@Autowired
+	private LayoutDao							layoutDao;
+
+	/**
+	 * Factory object used for creation of {@link LayoutView} elements.
+	 */
+	@Autowired
+	private LayoutViewFactory			layoutViewFactory;
+
+	/**
+	 * Service that manages and gives access to user information.
+	 */
+	@Autowired
+	private IUserService					userService;
+
+	/**
+	 * Service used to access logs.
+	 * 
+	 * @see ILogService
+	 */
+	@Autowired
+	private ILogService						logService;
+
+	/**
+	 * Service that manages and gives access to configuration parameters.
+	 */
+	@Autowired
+	private IConfigurationService	configurationService;
+
+	/**
+	 * Utils that help to manage the sessions in custom multithreaded
+	 * implementation.
+	 */
+	@Autowired
+	private DbUtils								dbUtils;
+
+	@Override
+	public boolean userCanAddLayout(Model model, User user) {
+		// if we don't have privileges to view the object then we cannot add layouts
+		if (!userService.userHasPrivilege(user, PrivilegeType.VIEW_PROJECT, model.getProject())) {
+			return false;
+		}
+		long count = getAvailableCustomLayoutsNumber(user);
+		return count > 0;
+	}
+
+	@Override
+	public long getAvailableCustomLayoutsNumber(User user) {
+		long level = userService.getUserPrivilegeLevel(user, PrivilegeType.CUSTOM_LAYOUTS);
+		long layouts = layoutDao.getCountByUser(user);
+		return level - layouts;
+
+	}
+
+	@Override
+	public boolean userCanRemoveLayout(LayoutView layout, User user) {
+		Layout originalLayout = layoutDao.getById(layout.getIdObject());
+		User creator = originalLayout.getCreator();
+		Project project = originalLayout.getModel().getProject();
+		if (creator == null) {
+			return userService.userHasPrivilege(user, PrivilegeType.LAYOUT_MANAGEMENT, project);
+		} else {
+			return creator.getId().equals(user.getId()) || userService.userHasPrivilege(user, PrivilegeType.LAYOUT_MANAGEMENT, project);
+		}
+	}
+
+	@Override
+	public List<LayoutView> getCustomLayouts(Model model, User user) {
+		List<LayoutView> result = new ArrayList<LayoutView>();
+		if (model == null || user == null) {
+			return result;
+		}
+		List<Layout> layouts = layoutDao.getLayoutsByModel(model);
+		for (Layout layout : layouts) {
+			if (!layout.isPublicLayout() && layout.getCreator() != null) {
+				if (layout.getCreator().getLogin().equals(user.getLogin())) {
+					result.add(layoutViewFactory.create(layout));
+				} else if (userService.userHasPrivilege(user, PrivilegeType.LAYOUT_VIEW, layout)) {
+					result.add(layoutViewFactory.create(layout));
+				}
+			}
+		}
+		Collections.sort(result, LayoutView.ID_COMPARATOR);
+		return result;
+	}
+
+	@Override
+	public List<LayoutView> getGeneralLayouts(Model model) {
+		List<LayoutView> result = new ArrayList<LayoutView>();
+		if (model == null) {
+			return result;
+		}
+		List<Layout> layouts = layoutDao.getLayoutsByModel(model);
+		for (Layout layout : layouts) {
+			if (layout.isPublicLayout()) {
+				result.add(layoutViewFactory.create(layout));
+			}
+		}
+		Collections.sort(result, LayoutView.ID_COMPARATOR);
+		return result;
+	}
+
+	@Override
+	public void removeLayout(LayoutView layout, final String homeDir) throws IOException {
+		final String dir;
+		final Layout dbLayout = layoutDao.getById(layout.getIdObject());
+		if (homeDir != null) {
+			if (dbLayout.getModel().getProject().getDirectory() != null) {
+				dir = homeDir + "/../map_images/" + dbLayout.getModel().getProject().getDirectory() + "/";
+			} else {
+				dir = homeDir + "/../map_images/";
+			}
+		} else {
+			dir = null;
+		}
+
+		String projectId = dbLayout.getModel().getProject().getProjectId();
+		String email = null;
+		User user = dbLayout.getCreator();
+		if (user != null) {
+			email = user.getEmail();
+		}
+
+		dbLayout.getModel().removeLayout(dbLayout);
+		layoutDao.delete(dbLayout);
+
+		LogParams params = new LogParams().object(dbLayout).type(LogType.LAYOUT_REMOVED);
+		logService.log(params);
+
+		if (email != null) {
+			try {
+				sendSuccesfullRemoveEmail(projectId, layout.getName(), email);
+			} catch (MessagingException e) {
+				logger.error(e);
+			}
+		}
+		Thread computations = new Thread(new Runnable() {
+			@Override
+			public void run() {
+				MapGenerator generator = new MapGenerator();
+				try {
+					generator.removeLayout(dbLayout, dir);
+				} catch (IOException e) {
+					logger.error(e);
+				}
+
+			}
+		});
+		computations.start();
+	}
+
+	@Override
+	public void updateLayout(LayoutView layout) {
+		Layout dbLayout = layoutDao.getById(layout.getIdObject());
+		dbLayout.setTitle(layout.getName());
+		dbLayout.setDescription(layout.getDescription());
+		if (layout.getCreator().isEmpty()) {
+			dbLayout.setCreator(null);
+			dbLayout.setPublicLayout(true);
+		} else {
+			User user = userService.getUserByNameSurname(layout.getCreator());
+			dbLayout.setCreator(user);
+			dbLayout.setPublicLayout(false);
+		}
+
+		layoutDao.update(dbLayout);
+	}
+
+	@Override
+	public void addViewPrivilegeToLayout(LayoutView layout, User user) {
+		ObjectPrivilege privilege = new ObjectPrivilege();
+		privilege.setIdObject(layout.getIdObject());
+		privilege.setLevel(1);
+		privilege.setType(PrivilegeType.LAYOUT_VIEW);
+		privilege.setUser(user);
+		userService.setUserPrivilege(user, privilege);
+	}
+
+	@Override
+	public void dropViewPrivilegeFromLayout(LayoutView layout, User user) {
+		ObjectPrivilege privilege = new ObjectPrivilege();
+		privilege.setIdObject(layout.getIdObject());
+		privilege.setLevel(0);
+		privilege.setType(PrivilegeType.LAYOUT_VIEW);
+		privilege.setUser(user);
+		userService.setUserPrivilege(user, privilege);
+	}
+
+	@Override
+	public LayoutView createLayoutWithImages(final CreateLayoutParams params) throws IOException, InvalidColorSchemaException, CommandExecutionException {
+		ColorSchemaReader reader = new ColorSchemaReader();
+		final Collection<ColorSchema> schemas = reader
+				.readColorSchema(params.getColorInputStream(), TextFileUtils.getHeaderParametersFromFile(params.getColorInputStream()));
+		final Model colorModel = new CopyCommand(params.getModel()).execute();
+		new ColorModelCommand(params.getModel(), schemas).execute();
+		final EmailSender sender = new EmailSender(configurationService);
+		String[] tmp = params.getDirectory().split("[\\\\/]");
+		String simpleDir = tmp[tmp.length - 1];
+
+		layoutDao.flush();
+
+		boolean customSession = false;
+		if (params.isAsync()) {
+			customSession = !dbUtils.isCustomSessionForCurrentThread();
+			if (customSession) {
+				dbUtils.createSessionForCurrentThread();
+			}
+		}
+		final Map<Model, Integer> layoutIdByModel = new HashMap<Model, Integer>();
+
+		Layout topLayout = new Layout(params.getName(), simpleDir, false);
+		if (params.getUser() == null) {
+			topLayout.setPublicLayout(true);
+		} else {
+			topLayout.setPublicLayout(false);
+		}
+		topLayout.setStatus(LayoutStatus.NA);
+		topLayout.setProgress(0.0);
+		UploadedFileEntry fileEntry = new UploadedFileEntry();
+		fileEntry.setFileContent(IOUtils.toByteArray(params.getColorInputStream()));
+		fileEntry.setOriginalFileName(params.getLayoutFileName());
+		topLayout.setInputData(fileEntry);
+		topLayout.setDescription(params.getDescription());
+		params.getModel().addLayout(topLayout);
+		topLayout.setCreator(params.getUser());
+		layoutDao.add(topLayout);
+		topLayout.setDirectory(simpleDir + topLayout.getId());
+
+		layoutDao.update(topLayout);
+
+		layoutIdByModel.put(colorModel, topLayout.getId());
+
+		for (ModelSubmodelConnection connection : params.getModel().getSubmodelConnections()) {
+			Layout layout = new Layout(params.getName(), simpleDir, false);
+			layout.setStatus(LayoutStatus.NA);
+			layout.setProgress(0.0);
+			connection.getSubmodel().getModel().addLayout(layout);
+			layout.setCreator(params.getUser());
+			layout.setPublicLayout(false);
+			topLayout.addLayout(layout);
+			layoutDao.add(layout);
+			layout.setDirectory(simpleDir + layout.getId());
+
+			layoutDao.update(layout);
+
+			layoutIdByModel.put(colorModel.getSubmodelByConnectionName(connection.getName()), layout.getId());
+		}
+
+		if (params.isAsync()) {
+			if (customSession) {
+				dbUtils.closeSessionForCurrentThread();
+			} else {
+				layoutDao.commit();
+			}
+		}
+		final int layoutId = layoutIdByModel.get(colorModel);
+
+		Thread computations = new Thread(new Runnable() {
+			@Override
+			public void run() {
+				if (params.isAsync()) {
+					// open transaction for this thread
+					dbUtils.createSessionForCurrentThread();
+				}
+
+				try {
+					MapGenerator generator = new MapGenerator();
+					final int models = layoutIdByModel.entrySet().size();
+
+					int count = 0;
+					for (Model m : layoutIdByModel.keySet()) {
+						final int counted = count;
+						int id = layoutIdByModel.get(m);
+						MapGeneratorParams imgParams = generator.new MapGeneratorParams().model(m).directory(params.getDirectory() + id).updater(new IProgressUpdater() {
+							private int lastProgress = -1;
+
+							@Override
+							public void setProgress(double progress) {
+								progress = progress / ((double) models) + ((double) counted * MAX_PROGRESS) / ((double) models);
+								if (((int) progress) != lastProgress) {
+									Layout layout = layoutDao.getById(layoutId);
+									lastProgress = (int) progress;
+									layout.setProgress(progress);
+									layout.setStatus(LayoutStatus.GENERATING);
+									layoutDao.update(layout);
+									if (params.isAsync()) {
+										layoutDao.commit();
+									}
+								}
+							}
+						});
+						generator.generateMapImages(imgParams);
+						count++;
+					}
+					Layout layout = layoutDao.getById(layoutId);
+					layout.setProgress(IProgressUpdater.MAX_PROGRESS);
+					layout.setStatus(LayoutStatus.OK);
+					layoutDao.update(layout);
+					if (params.isAsync()) {
+						layoutDao.commit();
+					}
+
+					try {
+						sendSuccessfullGenerationEmail(params, schemas);
+					} catch (MessagingException e) {
+						logger.error("Problem with sending email", e);
+					}
+					logService.log(new LogParams().object(layout).description("Created successfully.").type(LogType.LAYOUT_CREATED));
+				} catch (Exception e) {
+					logger.error("Problem with creating layout", e);
+
+					Layout layout = layoutDao.getById(layoutId);
+					layout.setProgress(IProgressUpdater.MAX_PROGRESS);
+					layout.setStatus(LayoutStatus.FAILURE);
+					layoutDao.update(layout);
+
+					try {
+						sender.sendEmail(
+								"MapViewer status", "There was a problem with generating layout " + params.getName() + ". Contact administrator to solve this issue.",
+								params.getUser());
+					} catch (MessagingException e1) {
+						logger.error("Problem with sending email", e1);
+					}
+					logService.log(new LogParams().object(layout).description("Problem during creation.").type(LogType.LAYOUT_CREATED));
+				}
+				if (params.isAsync()) {
+					// close the transaction for this thread
+					dbUtils.closeSessionForCurrentThread();
+				}
+			}
+		});
+
+		if (params.isAsync()) {
+			computations.start();
+		} else {
+			computations.run();
+		}
+		return layoutViewFactory.create(topLayout);
+	}
+
+	@Override
+	public LayoutView createLayout(final CreateLayoutParams params) throws IOException, InvalidColorSchemaException {
+		ColorSchemaReader reader = new ColorSchemaReader();
+		final Collection<ColorSchema> schemas = reader
+				.readColorSchema(params.getColorInputStream(), TextFileUtils.getHeaderParametersFromFile(params.getColorInputStream()));
+
+		// check if we can color our model using this schema,
+		// if not then exception will be thrown and passed up
+		try {
+			new ColorModelCommand(params.getModel(), schemas).execute();
+		} catch (CommandExecutionException e) {
+			throw new InvalidColorSchemaException(e);
+		}
+
+		String[] tmp = params.getDirectory().split("[\\\\/]");
+		String simpleDir = tmp[tmp.length - 1];
+
+		layoutDao.flush();
+
+		boolean customSession = false;
+
+		if (params.isAsync()) {
+			customSession = !dbUtils.isCustomSessionForCurrentThread();
+			if (customSession) {
+				dbUtils.createSessionForCurrentThread();
+			}
+		}
+
+		Layout topLayout = new Layout(params.getName(), simpleDir, false);
+		if (params.getUser() == null) {
+			topLayout.setPublicLayout(true);
+		} else {
+			topLayout.setPublicLayout(false);
+		}
+		topLayout.setStatus(LayoutStatus.OK);
+		topLayout.setProgress(0.0);
+		UploadedFileEntry fileEntry = new UploadedFileEntry();
+		fileEntry.setFileContent(IOUtils.toByteArray(params.getColorInputStream()));
+		fileEntry.setOriginalFileName(params.getLayoutFileName());
+		topLayout.setInputData(fileEntry);
+		topLayout.setDescription(params.getDescription());
+		params.getModel().addLayout(topLayout);
+		topLayout.setCreator(params.getUser());
+		layoutDao.add(topLayout);
+		topLayout.setDirectory(simpleDir + topLayout.getId());
+
+		layoutDao.update(topLayout);
+
+		for (ModelSubmodelConnection connection : params.getModel().getSubmodelConnections()) {
+			Layout layout = new Layout(params.getName(), simpleDir, false);
+			layout.setStatus(LayoutStatus.OK);
+			layout.setProgress(0.0);
+			connection.getSubmodel().getModel().addLayout(layout);
+			layout.setCreator(params.getUser());
+			layout.setPublicLayout(false);
+			topLayout.addLayout(layout);
+			layoutDao.add(layout);
+			layout.setDirectory(simpleDir + layout.getId());
+
+			layoutDao.update(layout);
+		}
+
+		if (params.isAsync()) {
+			if (customSession) {
+				dbUtils.closeSessionForCurrentThread();
+			} else {
+				layoutDao.commit();
+			}
+		}
+		Thread computations = new Thread(new Runnable() {
+			@Override
+			public void run() {
+				if (params.isAsync()) {
+					// open transaction for this thread
+					dbUtils.createSessionForCurrentThread();
+				}
+
+				try {
+					sendSuccessfullGenerationEmail(params, schemas);
+				} catch (MessagingException e) {
+					logger.error("Problem with sending email", e);
+				}
+
+				if (params.isAsync()) {
+					// close the transaction for this thread
+					dbUtils.closeSessionForCurrentThread();
+				}
+			}
+		});
+
+		LogParams logParams = new LogParams().object(topLayout).description("Created successfully.").type(LogType.LAYOUT_CREATED);
+		logService.log(logParams);
+
+		if (params.isAsync()) {
+			computations.start();
+		} else {
+			computations.run();
+		}
+		return layoutViewFactory.create(topLayout);
+	}
+
+	/**
+	 * @return the configurationService
+	 * @see #configurationService
+	 */
+	public IConfigurationService getConfigurationService() {
+		return configurationService;
+	}
+
+	/**
+	 * @param configurationService
+	 *          the configurationService to set
+	 * @see #configurationService
+	 */
+	public void setConfigurationService(IConfigurationService configurationService) {
+		this.configurationService = configurationService;
+	}
+
+	/**
+	 * @return the dbUtils
+	 * @see #dbUtils
+	 */
+	public DbUtils getDbUtils() {
+		return dbUtils;
+	}
+
+	/**
+	 * @param dbUtils
+	 *          the dbUtils to set
+	 * @see #dbUtils
+	 */
+	public void setDbUtils(DbUtils dbUtils) {
+		this.dbUtils = dbUtils;
+	}
+
+	/**
+	 * @return the userService
+	 * @see #userService
+	 */
+	public IUserService getUserService() {
+		return userService;
+	}
+
+	/**
+	 * @param userService
+	 *          the userService to set
+	 * @see #userService
+	 */
+	public void setUserService(IUserService userService) {
+		this.userService = userService;
+	}
+
+	@Override
+	public LayoutView getLayoutByName(Model model, String name) {
+		if (model == null) {
+			return null;
+		}
+		Layout layout = layoutDao.getLayoutByName(model, name);
+		if (layout != null) {
+			return layoutViewFactory.create(layout);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Sends notification email that layout was removed.
+	 * 
+	 * @param projectId
+	 *          identifier of the project
+	 * @param layoutName
+	 *          name of the layout
+	 * @param email
+	 *          otification email
+	 * @throws MessagingException
+	 *           thrown when there is a problem with sending email
+	 */
+	protected void sendSuccesfullRemoveEmail(String projectId, String layoutName, String email) throws MessagingException {
+		EmailSender emailSender = new EmailSender(configurationService);
+		StringBuilder content = new StringBuilder("Layout " + layoutName + " in map " + projectId + " was successfully removed.<br/>");
+		emailSender.sendEmail("MapViewer notification", content.toString(), email);
+	}
+
+	/**
+	 * Sends notification email that layout was generated.
+	 * 
+	 * @param params
+	 *          list of {@link CreateLayoutParams params} used for layout creation
+	 * @param schemas
+	 *          set of schemas used in coloring
+	 * @throws MessagingException
+	 *           thrown when there is a problem with sending email
+	 */
+	protected void sendSuccessfullGenerationEmail(final CreateLayoutParams params, final Collection<ColorSchema> schemas) throws MessagingException {
+		EmailSender emailSender = new EmailSender(configurationService);
+		StringBuilder content = new StringBuilder("Layout " + params.getName() + " generated successfully.\n");
+		content.append("Result of coloring:<br/>");
+
+		String table = prepareTableResult(schemas, new ColorSchemaReader());
+		content.append(table);
+		if (params.getUser() != null) { // send email to a user who owns the layout
+			emailSender.sendEmail("MapViewer notification", content.toString(), params.getUser());
+
+			// send email to the model owner
+			String email = params.getModel().getNotifyEmail();
+			if (email != null && !email.equals(params.getUser().getEmail())) {
+				content = new StringBuilder("");
+				String username = "UNKNOWN";
+				if (params.getUser() != null) {
+					username = params.getUser().getLogin();
+				}
+				content.append("User " + username + " created layout in " + params.getModel().getProject().getProjectId() + " map.");
+
+				emailSender.sendEmail("MapViewer notification", content.toString(), email);
+			}
+		} else if (params.getModel().getNotifyEmail() != null) {
+			// if nobody owns the layout then send it to the model owner
+			emailSender.sendEmail("MapViewer notification", content.toString(), params.getModel().getNotifyEmail());
+		}
+	}
+
+	/**
+	 * Prepares table with statistics about coloring.
+	 * 
+	 * @param schemas
+	 *          schemas that were used for coloring
+	 * @param scr
+	 *          interface that returns list of columns that should be printed
+	 * @return table with statistics about coloring
+	 */
+	protected String prepareTableResult(Collection<ColorSchema> schemas, ColorSchemaReader scr) {
+		StringBuilder sb = new StringBuilder("");
+
+		Collection<ColorSchemaColumn> columns = scr.getSetColorSchemaColumns(schemas);
+
+		for (ColorSchemaColumn column : ColorSchemaColumn.values()) {
+			if (columns.contains(column)) {
+				sb.append(column.getTitle() + "\t");
+			}
+		}
+		sb.append("matches<br/>\n");
+
+		for (ColorSchema originalSchema : schemas) {
+			for (ColorSchema schema : splitColorSchema(originalSchema)) {
+				sb.append(prepareTableRow(columns, schema));
+			}
+		}
+
+		return sb.toString();
+	}
+
+	/**
+	 * {@link ColorSchema} sometimes contains merged value from few rows. This
+	 * method split single {@link ColorSchema} object to simple flat objects that
+	 * can be serialiazed in a simple tab separated file.
+	 * 
+	 * @param originalSchema
+	 *          original {@link ColorSchema} objcet that we want to spli into flat
+	 *          objects
+	 * @return {@link List} of flat schema objects obtained from input
+	 */
+	private List<ColorSchema> splitColorSchema(ColorSchema originalSchema) {
+		List<ColorSchema> result = new ArrayList<>();
+		if (originalSchema instanceof GenericColorSchema) {
+			result.add(originalSchema);
+		} else if (originalSchema instanceof GeneVariationColorSchema) {
+			for (GeneVariation gv : ((GeneVariationColorSchema) originalSchema).getGeneVariations()) {
+				GeneVariationColorSchema copy = (GeneVariationColorSchema) originalSchema.copy();
+				copy.getGeneVariations().clear();
+				copy.addGeneVariation(gv.copy());
+				result.add(copy);
+			}
+		} else {
+			throw new InvalidArgumentException("Unknown class type: " + originalSchema.getClass());
+		}
+		return result;
+	}
+
+	/**
+	 * Prepares tab separated {@link String} represenation of {@link ColorSchema}.
+	 * 
+	 * @param columns
+	 *          columns that should be outputed in the result String
+	 * @param schema
+	 *          input ColorSchema that is going to be transformed into String
+	 *          representation
+	 * @return tab separated {@link String} represenation of {@link ColorSchema}
+	 */
+	protected String prepareTableRow(Collection<ColorSchemaColumn> columns, ColorSchema schema) {
+		StringBuilder sb = new StringBuilder();
+		for (ColorSchemaColumn column : ColorSchemaColumn.values()) {
+			if (columns.contains(column)) {
+				if (schema instanceof GenericColorSchema) {
+					sb.append(prepareTableCellForGenericSchema((GenericColorSchema) schema, column));
+				} else if (schema instanceof GeneVariationColorSchema) {
+					sb.append(prepareTableCellForGeneVariationSchema((GeneVariationColorSchema) schema, column));
+				} else {
+					throw new InvalidArgumentException("Unknown schema type: " + schema.getClass());
+				}
+			}
+		}
+		sb.append(schema.getMatches() + "<br/>\n");
+		return sb.toString();
+	}
+
+	/**
+	 * Returns String representing data of {@link GenericColorSchema} that should
+	 * appear in a given {@link ColorSchemaColumn}.
+	 * 
+	 * @param schema
+	 *          object for which data will be returned
+	 * @param column
+	 *          column for which data should be returned
+	 * @return {@link String} representing data of {@link GenericColorSchema} that
+	 *         should appear in a given {@link ColorSchemaColumn}
+	 */
+	protected String prepareTableCellForGenericSchema(GenericColorSchema schema, ColorSchemaColumn column) {
+		StringBuilder sb = new StringBuilder();
+		if (column.equals(ColorSchemaColumn.COLOR)) {
+			if (schema.getColor() != null) {
+				sb.append("#" + Integer.toHexString(schema.getColor().getRGB()).substring(2).toUpperCase());
+			}
+			sb.append("\t");
+		} else if (column.equals(ColorSchemaColumn.NAME)) {
+			sb.append(schema.getName() + "\t");
+		} else if (column.equals(ColorSchemaColumn.VALUE)) {
+			sb.append(schema.getValue() + "\t");
+		} else if (column.equals(ColorSchemaColumn.COMPARTMENT)) {
+			for (String str : schema.getCompartments()) {
+				sb.append(str + ", ");
+			}
+			sb.append("\t");
+		} else if (column.equals(ColorSchemaColumn.TYPE)) {
+			for (Class<? extends Species> str : schema.getTypes()) {
+				sb.append(str.getSimpleName() + ", ");
+			}
+			sb.append("\t");
+		} else if (column.equals(ColorSchemaColumn.IDENTIFIER)) {
+			for (Pair<MiriamType, String> pair : schema.getIdentifierColumns()) {
+				if (pair.getRight() != null && !pair.getRight().trim().equals("")) {
+					sb.append(pair.getLeft().getCommonName() + ": " + pair.getRight() + ", ");
+				}
+			}
+			sb.append("\t");
+		} else if (column.equals(ColorSchemaColumn.REACTION_IDENTIFIER)) {
+			sb.append(schema.getReactionIdentifier() + "\t");
+		} else if (column.equals(ColorSchemaColumn.LINE_WIDTH)) {
+			sb.append(schema.getLineWidth() + "\t");
+		} else if (column.equals(ColorSchemaColumn.REVERSE_REACTION)) {
+			sb.append(schema.getReverseReaction() + "\t");
+		} else if (column.equals(ColorSchemaColumn.POSITION)) {
+			sb.append(schema.getReverseReaction() + "\t");
+		} else if (column.equals(ColorSchemaColumn.DESCRIPTION)) {
+			sb.append(schema.getDescription() + "\t");
+		} else {
+			throw new InvalidArgumentException("Unknown column type: " + column + " for schema type: " + schema.getClass());
+		}
+		return sb.toString();
+	}
+
+	/**
+	 * Returns String representing data of {@link GeneVariationColorSchema} that
+	 * should appear in a given {@link ColorSchemaColumn}.
+	 * 
+	 * @param schema
+	 *          object for which data will be returned
+	 * @param column
+	 *          column for which data should be returned
+	 * @return {@link String} representing data of
+	 *         {@link GeneVariationColorSchema} that should appear in a given
+	 *         {@link ColorSchemaColumn}
+	 */
+	protected String prepareTableCellForGeneVariationSchema(GeneVariationColorSchema schema, ColorSchemaColumn column) {
+		StringBuilder sb = new StringBuilder();
+		if (column.equals(ColorSchemaColumn.COLOR)) {
+			if (schema.getColor() != null) {
+				sb.append("#" + Integer.toHexString(schema.getColor().getRGB()).substring(2).toUpperCase());
+			}
+			sb.append("\t");
+		} else if (column.equals(ColorSchemaColumn.NAME)) {
+			sb.append(schema.getName() + "\t");
+		} else if (column.equals(ColorSchemaColumn.VALUE)) {
+			sb.append(schema.getValue() + "\t");
+		} else if (column.equals(ColorSchemaColumn.COMPARTMENT)) {
+			for (String str : schema.getCompartments()) {
+				sb.append(str + ", ");
+			}
+			sb.append("\t");
+		} else if (column.equals(ColorSchemaColumn.TYPE)) {
+			for (Class<? extends Species> str : schema.getTypes()) {
+				sb.append(str.getSimpleName() + ", ");
+			}
+			sb.append("\t");
+		} else if (column.equals(ColorSchemaColumn.IDENTIFIER)) {
+			for (Pair<MiriamType, String> pair : schema.getIdentifierColumns()) {
+				if (pair.getRight() != null && !pair.getRight().trim().equals("")) {
+					sb.append(pair.getLeft().getCommonName() + ": " + pair.getRight() + ", ");
+				}
+			}
+			sb.append("\t");
+		} else if (column.equals(ColorSchemaColumn.REACTION_IDENTIFIER)) {
+			sb.append(schema.getReactionIdentifier() + "\t");
+		} else if (column.equals(ColorSchemaColumn.LINE_WIDTH)) {
+			sb.append(schema.getLineWidth() + "\t");
+		} else if (column.equals(ColorSchemaColumn.REVERSE_REACTION)) {
+			sb.append(schema.getReverseReaction() + "\t");
+		} else if (column.equals(ColorSchemaColumn.POSITION)) {
+			sb.append(schema.getGeneVariations().get(0).getPosition() + "\t");
+		} else if (column.equals(ColorSchemaColumn.DESCRIPTION)) {
+			sb.append(schema.getDescription() + "\t");
+		} else if (column.equals(ColorSchemaColumn.ORIGINAL_DNA)) {
+			sb.append(schema.getGeneVariations().get(0).getOriginalDna() + "\t");
+		} else if (column.equals(ColorSchemaColumn.ALTERNATIVE_DNA)) {
+			sb.append(schema.getGeneVariations().get(0).getModifiedDna() + "\t");
+		} else if (column.equals(ColorSchemaColumn.REFERENCE_GENOME_TYPE)) {
+			sb.append(schema.getGeneVariations().get(0).getReferenceGenomeType() + "\t");
+		} else if (column.equals(ColorSchemaColumn.REFERENCE_GENOME_VERSION)) {
+			sb.append(schema.getGeneVariations().get(0).getReferenceGenomeVersion() + "\t");
+		} else if (column.equals(ColorSchemaColumn.CONTIG)) {
+			sb.append(schema.getGeneVariations().get(0).getContig() + "\t");
+		} else if (column.equals(ColorSchemaColumn.REFERENCES)) {
+			MiriamConnector mc = new MiriamConnector();
+			for (MiriamData md : schema.getGeneVariations().get(0).getReferences()) {
+				sb.append(mc.miriamDataToUri(md) + "\t");
+			}
+		} else {
+			throw new InvalidArgumentException("Unknown column type: " + column + " for schema type: " + schema.getClass());
+		}
+		return sb.toString();
+	}
+
+	@Override
+	public byte[] getInputDataForLayout(LayoutView layoutView) {
+		return getInputDataForLayout(layoutView.getIdObject());
+	}
+
+	/**
+	 * Returns byte array containing data from original input file that was used
+	 * to generate the layout.
+	 * 
+	 * @param layoutId
+	 *          identifier of layout for which we want to retrieve original file
+	 *          data
+	 * @return original data file for given layout, if such file is not stored in
+	 *         database (compatibility reasons) then null is returned
+	 */
+	private byte[] getInputDataForLayout(int layoutId) {
+		Layout layout = layoutDao.getById(layoutId);
+		if (layout == null) {
+			return null;
+		} else {
+			if (layout.getInputData() != null) {
+				return layout.getInputData().getFileContent();
+			} else {
+				return null;
+			}
+		}
+	}
+
+	@Override
+	public List<LightLayoutAliasView> getAliasesForLayout(Model model, int layoutId) {
+		try {
+			ColorSchemaReader reader = new ColorSchemaReader();
+			Collection<ColorSchema> schemas;
+			schemas = reader.readColorSchema(getInputDataForLayout(layoutId));
+			ColorModelCommand command = new ColorModelCommand(model, schemas);
+			LightLayoutAliasViewFactory factory = new LightLayoutAliasViewFactory();
+			List<LightLayoutAliasView> result = new ArrayList<>();
+			for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) {
+				if (entry.getKey() instanceof Alias) {
+					result.add(factory.create(new Pair<Alias, ColorSchema>((Alias) entry.getKey(), entry.getValue())));
+				}
+			}
+			return result;
+		} catch (InvalidColorSchemaException e) {
+			throw new InvalidStateException(e);
+		} catch (IOException e) {
+			throw new InvalidStateException(e);
+		}
+	}
+
+	@Override
+	public List<LightLayoutReactionView> getReactionsForLayout(Model model, int layoutId) {
+		try {
+			ColorSchemaReader reader = new ColorSchemaReader();
+			Collection<ColorSchema> schemas;
+			schemas = reader.readColorSchema(getInputDataForLayout(layoutId));
+			ColorModelCommand command = new ColorModelCommand(model, schemas);
+			LightLayoutReactionViewFactory factory = new LightLayoutReactionViewFactory();
+			List<LightLayoutReactionView> result = new ArrayList<>();
+			for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) {
+				if (entry.getKey() instanceof Reaction) {
+					result.add(factory.create(new Pair<Reaction, ColorSchema>((Reaction) entry.getKey(), entry.getValue())));
+				}
+			}
+			return result;
+		} catch (InvalidColorSchemaException e) {
+			throw new InvalidStateException(e);
+		} catch (IOException e) {
+			throw new InvalidStateException(e);
+		}
+	}
+
+	@Override
+	public Map<Object, ColorSchema> getElementsForLayout(Model model, Integer layoutId) {
+		try {
+			ColorSchemaReader reader = new ColorSchemaReader();
+			Collection<ColorSchema> schemas;
+			schemas = reader.readColorSchema(getInputDataForLayout(layoutId));
+			ColorModelCommand command = new ColorModelCommand(model, schemas);
+			return command.getModifiedElements();
+		} catch (InvalidColorSchemaException e) {
+			throw new InvalidStateException(e);
+		} catch (IOException e) {
+			throw new InvalidStateException(e);
+		}
+	}
+
+	@Override
+	public List<FullLayoutAliasView> getFullAliasesForLayoutByIds(Model model, List<Pair<Integer, Integer>> identifiers, int layoutId) {
+		try {
+			Set<Integer> ids = new HashSet<>();
+			for (Pair<Integer, Integer> pair : identifiers) {
+				ids.add(pair.getRight());
+			}
+
+			ColorSchemaReader reader = new ColorSchemaReader();
+			Collection<ColorSchema> schemas;
+			schemas = reader.readColorSchema(getInputDataForLayout(layoutId));
+			ColorModelCommand command = new ColorModelCommand(model, schemas);
+			FullLayoutAliasViewFactory factory = new FullLayoutAliasViewFactory();
+			List<FullLayoutAliasView> result = new ArrayList<>();
+
+			// TODO poor performance, improve it
+			for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) {
+				if (entry.getKey() instanceof Alias) {
+					Alias alias = (Alias) entry.getKey();
+					if (ids.contains(alias.getId())) {
+						result.add(factory.create(new Pair<Alias, ColorSchema>(alias, entry.getValue())));
+					}
+				}
+			}
+			return result;
+		} catch (InvalidColorSchemaException e) {
+			throw new InvalidStateException(e);
+		} catch (IOException e) {
+			throw new InvalidStateException(e);
+		}
+	}
+}
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java
index 28375a5c04..6a1d8e58d5 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java
@@ -23,7 +23,8 @@ import lcsb.mapviewer.commands.CopyCommand;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.Layout;
@@ -32,7 +33,6 @@ import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelData;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.model.user.User;
 import lcsb.mapviewer.persist.dao.map.ModelDao;
 import lcsb.mapviewer.services.interfaces.ILayoutService;
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
index a6bfe23fb5..25cc9a4e3f 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
@@ -53,13 +53,13 @@ import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.converter.graphics.MapGenerator;
 import lcsb.mapviewer.converter.graphics.MapGenerator.MapGeneratorParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.converter.model.sbgnml.SbgnmlXmlConverter;
 import lcsb.mapviewer.converter.zip.ZipEntryFile;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.ProjectStatus;
 import lcsb.mapviewer.model.log.LogType;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.graph.DataMining;
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java b/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
index 95083039b9..99869b8ae6 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
@@ -18,8 +18,18 @@ import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidClassException;
 import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Drug;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
@@ -30,16 +40,6 @@ import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.ReactionNode;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Unknown;
 import lcsb.mapviewer.model.map.statistics.SearchType;
 import lcsb.mapviewer.persist.dao.map.ModelDao;
 import lcsb.mapviewer.services.interfaces.ISearchHistoryService;
diff --git a/service/src/main/java/lcsb/mapviewer/services/interfaces/IDataMiningService.java b/service/src/main/java/lcsb/mapviewer/services/interfaces/IDataMiningService.java
index ba81f380e5..1c087cc40e 100644
--- a/service/src/main/java/lcsb/mapviewer/services/interfaces/IDataMiningService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/interfaces/IDataMiningService.java
@@ -5,7 +5,7 @@ import java.util.Collection;
 import java.util.Set;
 
 import lcsb.mapviewer.common.IProgressUpdater;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.graph.DataMining;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.graph.DataMiningType;
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/SearchResultFactory.java b/service/src/main/java/lcsb/mapviewer/services/search/SearchResultFactory.java
index 060d242ccb..3f3d223863 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/SearchResultFactory.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/SearchResultFactory.java
@@ -12,16 +12,16 @@ import org.springframework.transaction.annotation.Transactional;
 import lcsb.mapviewer.annotation.data.Article;
 import lcsb.mapviewer.annotation.data.TargetType;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.services.search.data.ElementIdentifier;
 import lcsb.mapviewer.services.search.data.ElementIdentifier.ElementIdentifierType;
 import lcsb.mapviewer.services.search.db.GeneRow;
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasView.java b/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasView.java
index 8268fbbb96..de97a53dfa 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasView.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasView.java
@@ -8,10 +8,10 @@ import java.util.Map;
 
 import org.apache.log4j.Logger;
 
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.services.search.IHeavyView;
 import lcsb.mapviewer.services.view.AnnotationView;
 
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasViewFactory.java b/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasViewFactory.java
index 7fd70377fc..9457e4eae7 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasViewFactory.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasViewFactory.java
@@ -18,7 +18,10 @@ import lcsb.mapviewer.annotation.services.annotators.ChebiAnnotator;
 import lcsb.mapviewer.annotation.services.annotators.ChebiSearchException;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ModificationResidue;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
@@ -26,9 +29,6 @@ import lcsb.mapviewer.model.map.graph.DataMining;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.graph.DataMiningType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.fields.ModificationResidue;
 import lcsb.mapviewer.services.interfaces.IDataMiningService;
 import lcsb.mapviewer.services.overlay.ChebiTreeRow;
 import lcsb.mapviewer.services.search.ElementViewFactory;
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/IDbSearchService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/IDbSearchService.java
index a74deb1edd..75f84bb111 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/IDbSearchService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/IDbSearchService.java
@@ -4,7 +4,7 @@ import java.util.Collection;
 import java.util.List;
 
 import lcsb.mapviewer.common.IProgressUpdater;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.services.view.AbstractView;
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
index e82b7af3ec..a2c1eaa67e 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
@@ -23,8 +23,11 @@ import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
 import lcsb.mapviewer.annotation.services.annotators.HgncAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
@@ -32,9 +35,6 @@ import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.model.map.statistics.SearchType;
 import lcsb.mapviewer.services.interfaces.ISearchHistoryService;
 import lcsb.mapviewer.services.search.db.DbSearchCriteria;
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalViewFactory.java b/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalViewFactory.java
index 69f2559cdd..402a083a15 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalViewFactory.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalViewFactory.java
@@ -18,7 +18,7 @@ import lcsb.mapviewer.annotation.services.MeSHParser;
 import lcsb.mapviewer.annotation.services.PubmedParser;
 import lcsb.mapviewer.annotation.services.PubmedSearchException;
 import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugViewFactory.java b/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugViewFactory.java
index a372abb9bc..5dabb9d7d2 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugViewFactory.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugViewFactory.java
@@ -16,11 +16,11 @@ import com.google.gson.Gson;
 import lcsb.mapviewer.annotation.data.Drug;
 import lcsb.mapviewer.annotation.data.Target;
 import lcsb.mapviewer.annotation.data.TargetType;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.services.overlay.IconManager;
 import lcsb.mapviewer.services.overlay.IconType;
 import lcsb.mapviewer.services.search.SearchResultFactory;
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
index 47810a2bf4..98ba29b6fa 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
@@ -20,8 +20,11 @@ import lcsb.mapviewer.annotation.services.MiRNASearchException;
 import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
 import lcsb.mapviewer.annotation.services.annotators.HgncAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
@@ -29,9 +32,6 @@ import lcsb.mapviewer.model.map.layout.alias.GeneAlias;
 import lcsb.mapviewer.model.map.layout.alias.ProteinAlias;
 import lcsb.mapviewer.model.map.layout.alias.RnaAlias;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.model.map.statistics.SearchType;
 import lcsb.mapviewer.services.interfaces.ISearchHistoryService;
 import lcsb.mapviewer.services.search.db.DbSearchCriteria;
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAViewFactory.java b/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAViewFactory.java
index ed03c735fe..ca77e51f1d 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAViewFactory.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAViewFactory.java
@@ -1,119 +1,119 @@
-package lcsb.mapviewer.services.search.db.mirna;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import com.google.gson.Gson;
-
-import lcsb.mapviewer.annotation.data.MiRNA;
-import lcsb.mapviewer.annotation.data.Target;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.services.overlay.IconManager;
-import lcsb.mapviewer.services.overlay.IconType;
-import lcsb.mapviewer.services.search.SearchResultFactory;
-import lcsb.mapviewer.services.search.data.ElementIdentifier;
-import lcsb.mapviewer.services.search.db.DrugTargetViewVisibilityComparator;
-import lcsb.mapviewer.services.search.db.TargetView;
-import lcsb.mapviewer.services.search.db.TargetViewFactory;
-
-/**
- * Factory class for {@link MiRNAView} class.
- * 
- * @author Ayan Rota
- * 
- */
-public class MiRNAViewFactory extends SearchResultFactory<MiRNA, MiRNAView> {
-
-	/**
-	 * Default class logger.
-	 */
-	@SuppressWarnings("unused")
-	private static Logger			logger = Logger.getLogger(MiRNAViewFactory.class);
-
-	/**
-	 * Factory object for {@link TargetView} elements.
-	 */
-	@Autowired
-	private TargetViewFactory	drugTargetViewFactory;
-
-	@Override
-	public MiRNAView create(MiRNA miRNA) {
-		return create(miRNA, null, 0);
-	}
-
-	/**
-	 * Creates {@link MiRNAView}.
-	 * 
-	 * @param miRNA
-	 *          original MiRNA from which the data will be initialized
-	 * @param model
-	 *          model where the view will be presented
-	 * @param set
-	 *          which set of icons should be used
-	 * 
-	 * @return {@link MiRNAView} object for given miRNA. links are placed
-	 *         according to model given in the parameter.
-	 */
-	public MiRNAView create(MiRNA miRNA, Model model, int set) {
-		MiRNAView miRNAView = new MiRNAView(miRNA);
-		if (miRNA == null) {
-			return miRNAView;
-		}
-
-		miRNAView.setName(miRNA.getName());
-
-		List<TargetView> targetsRows = new ArrayList<>();
-		int differentNames = 0;
-		for (Target geneEntry : miRNA.getTargets()) {
-			targetsRows.add(drugTargetViewFactory.create(geneEntry, model));
-		}
-
-		Collections.sort(targetsRows, new DrugTargetViewVisibilityComparator());
-
-		for (TargetView geneTargetView : targetsRows) {
-			if (geneTargetView.getSelectable()) {
-				String icon = IconManager.getInstance().getIconForIndex(differentNames++, IconType.MI_RNA, set);
-				geneTargetView.setIcon(icon);
-				geneTargetView.setSelected(true);
-			}
-		}
-		miRNAView.setTargetRows(targetsRows);
-		return miRNAView;
-
-	}
-
-	@Override
-	public String createGson(MiRNAView object) {
-		return new Gson().toJson(object);
-	}
-
-	@Override
-	public List<ElementIdentifier> searchResultToElementIdentifier(MiRNAView searchResult, Model inputModel) {
-		List<ElementIdentifier> result = new ArrayList<>();
-
-		List<Model> models = new ArrayList<>();
-		models.addAll(inputModel.getSubmodels());
-		models.add(inputModel);
-		for (Model model : models) {
-			for (TargetView target : searchResult.getTargetRows()) {
-				if (target.getSelected() && target.getIcon() != null) {
-					for (Element element : model.getElements()) {
-						if (elementMatch(target, element)) {
-							for (Alias alias : model.getAliasesForElement(element)) {
-								result.add(new ElementIdentifier(alias, target.getIcon()));
-							}
-						}
-					}
-				}
-			}
-		}
-		return result;
-	}
-
-}
+package lcsb.mapviewer.services.search.db.mirna;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.google.gson.Gson;
+
+import lcsb.mapviewer.annotation.data.MiRNA;
+import lcsb.mapviewer.annotation.data.Target;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.services.overlay.IconManager;
+import lcsb.mapviewer.services.overlay.IconType;
+import lcsb.mapviewer.services.search.SearchResultFactory;
+import lcsb.mapviewer.services.search.data.ElementIdentifier;
+import lcsb.mapviewer.services.search.db.DrugTargetViewVisibilityComparator;
+import lcsb.mapviewer.services.search.db.TargetView;
+import lcsb.mapviewer.services.search.db.TargetViewFactory;
+
+/**
+ * Factory class for {@link MiRNAView} class.
+ * 
+ * @author Ayan Rota
+ * 
+ */
+public class MiRNAViewFactory extends SearchResultFactory<MiRNA, MiRNAView> {
+
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private static Logger			logger = Logger.getLogger(MiRNAViewFactory.class);
+
+	/**
+	 * Factory object for {@link TargetView} elements.
+	 */
+	@Autowired
+	private TargetViewFactory	drugTargetViewFactory;
+
+	@Override
+	public MiRNAView create(MiRNA miRNA) {
+		return create(miRNA, null, 0);
+	}
+
+	/**
+	 * Creates {@link MiRNAView}.
+	 * 
+	 * @param miRNA
+	 *          original MiRNA from which the data will be initialized
+	 * @param model
+	 *          model where the view will be presented
+	 * @param set
+	 *          which set of icons should be used
+	 * 
+	 * @return {@link MiRNAView} object for given miRNA. links are placed
+	 *         according to model given in the parameter.
+	 */
+	public MiRNAView create(MiRNA miRNA, Model model, int set) {
+		MiRNAView miRNAView = new MiRNAView(miRNA);
+		if (miRNA == null) {
+			return miRNAView;
+		}
+
+		miRNAView.setName(miRNA.getName());
+
+		List<TargetView> targetsRows = new ArrayList<>();
+		int differentNames = 0;
+		for (Target geneEntry : miRNA.getTargets()) {
+			targetsRows.add(drugTargetViewFactory.create(geneEntry, model));
+		}
+
+		Collections.sort(targetsRows, new DrugTargetViewVisibilityComparator());
+
+		for (TargetView geneTargetView : targetsRows) {
+			if (geneTargetView.getSelectable()) {
+				String icon = IconManager.getInstance().getIconForIndex(differentNames++, IconType.MI_RNA, set);
+				geneTargetView.setIcon(icon);
+				geneTargetView.setSelected(true);
+			}
+		}
+		miRNAView.setTargetRows(targetsRows);
+		return miRNAView;
+
+	}
+
+	@Override
+	public String createGson(MiRNAView object) {
+		return new Gson().toJson(object);
+	}
+
+	@Override
+	public List<ElementIdentifier> searchResultToElementIdentifier(MiRNAView searchResult, Model inputModel) {
+		List<ElementIdentifier> result = new ArrayList<>();
+
+		List<Model> models = new ArrayList<>();
+		models.addAll(inputModel.getSubmodels());
+		models.add(inputModel);
+		for (Model model : models) {
+			for (TargetView target : searchResult.getTargetRows()) {
+				if (target.getSelected() && target.getIcon() != null) {
+					for (Element element : model.getElements()) {
+						if (elementMatch(target, element)) {
+							for (Alias alias : model.getAliasesForElement(element)) {
+								result.add(new ElementIdentifier(alias, target.getIcon()));
+							}
+						}
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+}
diff --git a/service/src/main/java/lcsb/mapviewer/services/utils/SearchIndexer.java b/service/src/main/java/lcsb/mapviewer/services/utils/SearchIndexer.java
index b7bc490f3d..d9d2d8ba36 100644
--- a/service/src/main/java/lcsb/mapviewer/services/utils/SearchIndexer.java
+++ b/service/src/main/java/lcsb/mapviewer/services/utils/SearchIndexer.java
@@ -8,7 +8,7 @@ import java.util.Map.Entry;
 
 import org.apache.log4j.Logger;
 
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.SearchIndex;
 
diff --git a/service/src/main/java/lcsb/mapviewer/services/utils/data/ExportColumn.java b/service/src/main/java/lcsb/mapviewer/services/utils/data/ExportColumn.java
index e38aea2294..d95592e179 100644
--- a/service/src/main/java/lcsb/mapviewer/services/utils/data/ExportColumn.java
+++ b/service/src/main/java/lcsb/mapviewer/services/utils/data/ExportColumn.java
@@ -1,7 +1,7 @@
 package lcsb.mapviewer.services.utils.data;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This enum defines which columns are available in export function.
diff --git a/service/src/main/java/lcsb/mapviewer/services/view/PubmedAnnotatedElementsView.java b/service/src/main/java/lcsb/mapviewer/services/view/PubmedAnnotatedElementsView.java
index 53198e9f73..4bde13627c 100644
--- a/service/src/main/java/lcsb/mapviewer/services/view/PubmedAnnotatedElementsView.java
+++ b/service/src/main/java/lcsb/mapviewer/services/view/PubmedAnnotatedElementsView.java
@@ -6,8 +6,8 @@ import java.util.List;
 import lcsb.mapviewer.annotation.data.Article;
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.reaction.Reaction;
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/DataMiningServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/DataMiningServiceTest.java
index a1b51aa31d..a1a75c7e9b 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/DataMiningServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/DataMiningServiceTest.java
@@ -22,16 +22,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.annotation.Rollback;
 
 import lcsb.mapviewer.common.IProgressUpdater;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.log.GenericLog;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.graph.DataMining;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.services.ServiceTestFunctions;
 import lcsb.mapviewer.services.interfaces.IDataMiningService;
 
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/DataMiningServiceTest2.java b/service/src/test/java/lcsb/mapviewer/services/impl/DataMiningServiceTest2.java
index 6a0ec1ed15..3c3f6b35a1 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/DataMiningServiceTest2.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/DataMiningServiceTest2.java
@@ -11,7 +11,10 @@ import java.util.HashSet;
 import java.util.Set;
 
 import lcsb.mapviewer.common.IProgressUpdater;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.graph.DataMining;
@@ -19,9 +22,6 @@ import lcsb.mapviewer.model.map.graph.DataMiningType;
 import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import lcsb.mapviewer.services.ServiceTestFunctions;
 
 import org.apache.log4j.Logger;
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/ExporterServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/ExporterServiceTest.java
index 50700a9a30..688d103d32 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/ExporterServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/ExporterServiceTest.java
@@ -1,529 +1,529 @@
-package lcsb.mapviewer.services.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import lcsb.mapviewer.commands.CreateHierarchyCommand;
-import lcsb.mapviewer.converter.model.celldesigner.reaction.ReactionLineData;
-import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
-import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.reaction.ReactionNode;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.services.ServiceTestFunctions;
-import lcsb.mapviewer.services.interfaces.IExporterService;
-import lcsb.mapviewer.services.interfaces.IExporterService.ExporterParameters;
-import lcsb.mapviewer.services.utils.data.ExportColumn;
-import lcsb.mapviewer.services.utils.data.ExportFileType;
-import lcsb.mapviewer.services.view.PubmedAnnotatedElementsView;
-
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class ExporterServiceTest extends ServiceTestFunctions {
-	Logger					 logger = Logger.getLogger(ExporterServiceTest.class);
-	@Autowired
-	IExporterService exporter2;
-
-	ExporterService	exporter;
-
-	@Before
-	public void setUp() throws Exception {
-		exporter = (ExporterService) exporter2;
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testGetExportSpeciesStringForTabSeparatedFile() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
-			ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.ID, ExportColumn.COMPONENT_NAME, ExportColumn.COMPARTMENT_NAME, ExportColumn.TYPE };
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
-
-			// full export (all elements)
-			String string = exporter.getExportSpeciesString(params);
-			String lines[] = string.split("\n");
-			assertTrue("Not enough elements in the result file", lines.length > 1);
-
-			String response = lines[0];
-			String textColumns[] = response.split("\t");
-			assertEquals(5, textColumns.length);
-
-			// only proteins for self-made modules
-			new CreateHierarchyCommand(model, 8, 80).execute();
-			string = exporter.getExportSpeciesString(params.type(GenericProtein.class));
-			lines = string.split("\n");
-			assertTrue(lines.length > 1);
-
-			boolean differenceBetweenComponentCompartmnet = false;
-			int lineCount = 0;
-			for (String string2 : lines) {
-				if (lineCount == 0) {
-					textColumns = string2.split("\t");
-					assertEquals(ExportColumn.TYPE.getTitle(), textColumns[4]);
-				} else {
-					textColumns = string2.split("\t");
-					assertEquals(GenericProtein.class.getSimpleName(), textColumns[4]);
-					if (!textColumns[2].equalsIgnoreCase(textColumns[3])) {
-						differenceBetweenComponentCompartmnet = true;
-					}
-				}
-				lineCount++;
-			}
-			assertTrue(differenceBetweenComponentCompartmnet);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testDuplicatesInGetExportSpeciesString() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export_duplicate_elements.xml", false);
-			ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.COMPONENT_NAME, ExportColumn.TYPE };
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
-
-			// full export (all elements)
-			String string = exporter.getExportSpeciesString(params);
-
-			String lines[] = string.split("\n");
-			Set<String> uniqueNames = new HashSet<String>();
-			for (String string2 : lines) {
-				uniqueNames.add(string2);
-			}
-			assertEquals(uniqueNames.size(), lines.length);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetExportStringForOneSpecies_Complex() {
-		try {
-			Model model = getModelForFile("testFiles/export/hsp70.xml", true);
-
-			SpeciesAlias alias = (SpeciesAlias) model.getAliasByAliasId("csa1");
-			ExportColumn columns[] = { ExportColumn.NAME };
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).//
-			column(columns).//
-					complexElementsName(false).//
-					fileType(ExportFileType.TAB_SEPARATED);
-
-			List<String> elements = exporter.getExportStringForOneSpecies(alias, params);
-			assertTrue(elements.contains("HSP70:chaperon"));
-
-			// now the results are concatenated children
-			params.complexElementsName(true);
-
-			elements = exporter.getExportStringForOneSpecies(alias, params);
-			assertTrue(elements.size() > 0);
-			String string = elements.get(0);
-			assertFalse(string.equals("HSP70:chaperon"));
-			assertTrue(string.contains("HSP70"));
-			assertTrue(string.contains("STUB1"));
-			assertTrue(string.contains("DNAJB2"));
-			assertTrue(string.contains("BAG1"));
-
-			// and now check complexes with mix of proteins and molecules
-			alias = (SpeciesAlias) model.getAliasByAliasId("csa3");
-
-			elements = exporter.getExportStringForOneSpecies(alias, params);
-			assertTrue(elements.size() > 0);
-			string = elements.get(0);
-			assertTrue(string.contains("UBA1"));
-			assertTrue(string.contains("UBA6"));
-			assertTrue(string.contains("AMP"));
-
-			elements = exporter.getExportStringForOneSpecies(alias, params.type(Protein.class));
-			assertTrue(elements.size() > 0);
-			string = elements.get(0);
-			assertTrue(string.contains("UBA1"));
-			assertTrue(string.contains("UBA6"));
-			assertFalse(string.contains("AMP"));
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			fail("Exception occured");
-		}
-	}
-
-	@Test
-	public void testGetExportStringForOneReaction() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export/reaction.xml", false);
-			Set<CompartmentAlias> aliases = new HashSet<CompartmentAlias>();
-			for (CompartmentAlias alias : model.getCompartmentsAliases()) {
-				if (alias.getTitle().equalsIgnoreCase("Dopamine loaded synaptic vesicle"))
-					aliases.add(alias);
-			}
-
-			Reaction reaction = model.getReactionByReactionId("re2");
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).//
-			fileType(ExportFileType.SIF).//
-					type(Protein.class).//
-					type(ComplexSpecies.class).//
-					fileType(ExportFileType.SIF).//
-					complexElementsName(false).//
-					excluded(aliases);
-
-			String string = exporter.getExportSingleInteractionString(reaction, params).get(0);
-			assertNotNull(string);
-			assertTrue(string.contains("Calcium channel:RIMBP:RIM:MUNC13:RAB"));
-			assertTrue(string.contains("CSP:Hsc70:SGT"));
-			assertTrue(string.contains("SNCA"));
-			assertTrue(string.contains("trans-SNARE complex"));
-			assertFalse(string.contains("VAMP2"));
-
-			params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF).type(ComplexSpecies.class).type(Protein.class);
-			string = exporter.getExportSingleInteractionString(reaction, params).get(0);
-			assertTrue(string.contains("VAMP2"));
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testGetExportStringForOneReactionInGeneral() {
-		try {
-			Model model = getModelForFile("testFiles/export/reaction.xml", true);
-			Reaction reaction = model.getReactionByReactionId("re2");
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).//
-			fileType(ExportFileType.SIF).//
-					complexElementsName(false).//
-					type(ComplexSpecies.class).type(Protein.class);
-			String string = exporter.getExportSingleInteractionString(reaction, params).get(0);
-			assertNotNull(string);
-			assertTrue(string.contains("Calcium channel:RIMBP:RIM:MUNC13:RAB"));
-			assertTrue(string.contains("CSP:Hsc70:SGT"));
-			assertTrue(string.contains("SNCA"));
-			assertTrue(string.contains("trans-SNARE complex"));
-			assertTrue(string.contains("SNAP25"));
-			assertFalse(string.contains("RAB3A"));
-
-			params.complexElementsName(true);
-			string = exporter.getExportSingleInteractionString(reaction, params).get(0);
-			assertFalse(string.contains("trans-SNARE complex"));
-			assertTrue(string.contains("RAB3A"));
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			fail("Exception occured");
-		}
-
-	}
-
-	@Test
-	public void testGetExportStringForOneReactionInGeneralWithOnlyOneElement() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export/reaction.xml", false);
-			Reaction reaction = model.getReactionByReactionId("re11");
-			model.getReactions().clear();
-			model.addReaction(reaction);
-			Set<CompartmentAlias> aliases = new HashSet<CompartmentAlias>();
-			aliases.add((CompartmentAlias) model.getAliasByAliasId("ca1"));
-			ExporterParameters params = new IExporterService.ExporterParameters()
-					.model(model).fileType(ExportFileType.SIF).included("dopamine loaded synaptic vesicle");
-			assertEquals(0, exporter.getExportSingleInteractionString(reaction, params).size());
-
-			params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF);
-			assertEquals(1, exporter.getExportSingleInteractionString(reaction, params).size());
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetExportSingleInteractionString_text() {
-		try {
-			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
-			for (Reaction reaction : model.getReactions()) {
-				String str = exporter.getExportSingleInteractionString(
-						reaction, new IExporterService.ExporterParameters().fileType(ExportFileType.TAB_SEPARATED).type(Species.class)).get(0);
-
-				List<String> strings = new ArrayList<String>();
-				strings.add(ReactionLineData.getByReactionType(reaction.getClass()).getCellDesignerString());
-				strings.add(reaction.getIdReaction());
-				for (ReactionNode node : reaction.getReactionNodes()) {
-					strings.add(((Species) node.getElement()).getName());
-
-				}
-				for (String string : strings) {
-					assertTrue("Description \"" + str + "\" doesn't contain " + string + ". reactionId=" + reaction.getIdReaction(), str.contains(string));
-				}
-			}
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			fail("Exception occured");
-		}
-	}
-
-	@Test
-	public void testGetExportComponentAndCompartments() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export/export_model.xml", false);
-			new CreateHierarchyCommand(model, 7, 80).execute();
-			ExporterParameters params = new IExporterService.ExporterParameters()
-					.model(model).fileType(ExportFileType.TAB_SEPARATED).column(ExportColumn.NAME).column(ExportColumn.COMPONENT_NAME)
-					.column(ExportColumn.COMPARTMENT_NAME);
-
-			List<String> list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s1").get(0), params);
-			String desc = list.get(0);
-			String compartment = desc.split("\t")[2];
-			assertEquals("c1", compartment);
-			String component = desc.split("\t")[1];
-			assertEquals("Test3", component);
-
-			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s2").get(0), params);
-			desc = null;
-			for (String string : list) {
-				if (string.contains("Test 1")) {
-					desc = string;
-				}
-			}
-			compartment = desc.split("\t")[2];
-			assertEquals("c2", compartment);
-			component = desc.split("\t")[1];
-			assertEquals("Test 1", component);
-
-			for (String string : list) {
-				if (string.contains("Test2")) {
-					desc = string;
-				}
-			}
-			compartment = desc.split("\t")[2];
-			assertEquals("c2", compartment);
-			component = desc.split("\t")[1];
-			assertEquals("Test2", component);
-
-			for (String string : list) {
-				if (string.contains("Test3")) {
-					desc = string;
-				}
-			}
-			compartment = desc.split("\t")[2];
-			assertEquals("c2", compartment);
-			component = desc.split("\t")[1];
-			assertEquals("Test3", component);
-
-			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s3").get(0), params);
-			boolean ok = false;
-			for (String string : list) {
-				if (string.split("\t")[2].equals("null") && string.split("\t")[1].equals("Test2")) {
-					ok = true;
-				}
-			}
-			assertTrue(ok);
-
-			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s4").get(0), params);
-			desc = list.get(0);
-			compartment = desc.split("\t")[2];
-			assertEquals("null", compartment);
-			component = desc.split("\t")[1];
-			assertEquals("Test3", component);
-
-			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s5").get(0), params);
-			desc = list.get(0);
-			compartment = desc.split("\t")[2];
-			assertEquals("c3", compartment);
-			component = desc.split("\t")[1];
-			assertEquals("null", component);
-
-			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s6").get(0), params);
-			desc = list.get(0);
-			compartment = desc.split("\t")[2];
-			assertEquals("null", compartment);
-			component = desc.split("\t")[1];
-			assertEquals("null", component);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetExportSpeciesStringForTabSeparatedFile2() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
-			ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.ID, ExportColumn.COMPONENT_NAME, ExportColumn.COMPARTMENT_NAME, ExportColumn.TYPE };
-
-			ExporterParameters params = new IExporterService.ExporterParameters()
-					.model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED).type(Object.class);
-
-			// full export (all elements)
-			String string = exporter.getExportSpeciesString(params);
-			String lines[] = string.split("\n");
-			assertTrue("Not enough elements in the result file", lines.length > 1);
-
-			String response = lines[0];
-			String textColumns[] = response.split("\t");
-			assertEquals(columns.length, textColumns.length);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetExportCompartmentsString() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export/export_compartments.xml", false);
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.TAB_SEPARATED).type(Object.class);
-
-			// full export (all compartments)
-			String string = exporter.getExportCompartmentsString(params);
-			String lines[] = string.split("\n");
-			assertTrue("Not enough elements in the result file", lines.length >= 2);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testAllExportColumnsSpecies() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
-			List<ExportColumn> columns = new ArrayList<ExportColumn>();
-			for (ExportColumn column : ExportColumn.values()) {
-				if (column.getClazz().isAssignableFrom(Species.class)) {
-					columns.add(column);
-				}
-			}
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
-
-			// full export (all elements)
-			String string = exporter.getExportSpeciesString(params);
-			assertNotNull(string);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testAllExportColumnsReaction() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
-			List<ExportColumn> columns = new ArrayList<ExportColumn>();
-			for (ExportColumn column : ExportColumn.values()) {
-				if (column.getClazz().isAssignableFrom(Reaction.class)) {
-					columns.add(column);
-				}
-			}
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
-
-			// full export (all elements)
-			String string = exporter.getExportInteractionString(params);
-			assertNotNull(string);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetTabSeparatedReaction() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export/reaction.xml", false);
-			Set<CompartmentAlias> aliases = new HashSet<CompartmentAlias>();
-			for (CompartmentAlias alias : model.getCompartmentsAliases()) {
-				if (alias.getTitle().equalsIgnoreCase("Dopamine loaded synaptic vesicle"))
-					aliases.add(alias);
-			}
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).//
-			fileType(ExportFileType.TAB_SEPARATED).//
-					column(ExportColumn.REACTION_ID).//
-					column(ExportColumn.REACTION_TYPE).//
-					type(Species.class);
-
-			String string = exporter.getExportInteractionString(params);
-			assertTrue(string.indexOf("STATE_TRANSITION	REACTANT") >= 0);
-			assertTrue(string.indexOf("s2240") >= 0);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void test() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export/new_line_file.xml", false);
-			List<ExportColumn> columns = new ArrayList<ExportColumn>();
-			for (ExportColumn column : ExportColumn.values()) {
-				if (column.getClazz().isAssignableFrom(Species.class)) {
-					columns.add(column);
-				}
-			}
-
-			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
-
-			// full export (all elements)
-			String string = exporter.getExportSpeciesString(params);
-			String tmp[] = string.split("\n");
-			for (String string2 : tmp) {
-				assertTrue(string2,columns.size()<=string2.split("\t",-1).length);
-			}
-			assertNotNull(string);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testPubmedSummary() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/export/reaction.xml", false);
-			List<PubmedAnnotatedElementsView> result = exporter.getPublicationModelSummary(model);
-			assertNotNull(result);
-			for (PubmedAnnotatedElementsView pubmedAnnotatedElementsView : result) {
-				assertNotNull(pubmedAnnotatedElementsView.getArticle());
-				assertNotNull(pubmedAnnotatedElementsView.getArticle().getTitle());
-				assertTrue(pubmedAnnotatedElementsView.getElements().size()>0);
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
+package lcsb.mapviewer.services.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import lcsb.mapviewer.commands.CreateHierarchyCommand;
+import lcsb.mapviewer.converter.model.celldesigner.reaction.ReactionLineData;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
+import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+import lcsb.mapviewer.model.map.reaction.ReactionNode;
+import lcsb.mapviewer.services.ServiceTestFunctions;
+import lcsb.mapviewer.services.interfaces.IExporterService;
+import lcsb.mapviewer.services.interfaces.IExporterService.ExporterParameters;
+import lcsb.mapviewer.services.utils.data.ExportColumn;
+import lcsb.mapviewer.services.utils.data.ExportFileType;
+import lcsb.mapviewer.services.view.PubmedAnnotatedElementsView;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class ExporterServiceTest extends ServiceTestFunctions {
+	Logger					 logger = Logger.getLogger(ExporterServiceTest.class);
+	@Autowired
+	IExporterService exporter2;
+
+	ExporterService	exporter;
+
+	@Before
+	public void setUp() throws Exception {
+		exporter = (ExporterService) exporter2;
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testGetExportSpeciesStringForTabSeparatedFile() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
+			ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.ID, ExportColumn.COMPONENT_NAME, ExportColumn.COMPARTMENT_NAME, ExportColumn.TYPE };
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
+
+			// full export (all elements)
+			String string = exporter.getExportSpeciesString(params);
+			String lines[] = string.split("\n");
+			assertTrue("Not enough elements in the result file", lines.length > 1);
+
+			String response = lines[0];
+			String textColumns[] = response.split("\t");
+			assertEquals(5, textColumns.length);
+
+			// only proteins for self-made modules
+			new CreateHierarchyCommand(model, 8, 80).execute();
+			string = exporter.getExportSpeciesString(params.type(GenericProtein.class));
+			lines = string.split("\n");
+			assertTrue(lines.length > 1);
+
+			boolean differenceBetweenComponentCompartmnet = false;
+			int lineCount = 0;
+			for (String string2 : lines) {
+				if (lineCount == 0) {
+					textColumns = string2.split("\t");
+					assertEquals(ExportColumn.TYPE.getTitle(), textColumns[4]);
+				} else {
+					textColumns = string2.split("\t");
+					assertEquals(GenericProtein.class.getSimpleName(), textColumns[4]);
+					if (!textColumns[2].equalsIgnoreCase(textColumns[3])) {
+						differenceBetweenComponentCompartmnet = true;
+					}
+				}
+				lineCount++;
+			}
+			assertTrue(differenceBetweenComponentCompartmnet);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testDuplicatesInGetExportSpeciesString() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export_duplicate_elements.xml", false);
+			ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.COMPONENT_NAME, ExportColumn.TYPE };
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
+
+			// full export (all elements)
+			String string = exporter.getExportSpeciesString(params);
+
+			String lines[] = string.split("\n");
+			Set<String> uniqueNames = new HashSet<String>();
+			for (String string2 : lines) {
+				uniqueNames.add(string2);
+			}
+			assertEquals(uniqueNames.size(), lines.length);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetExportStringForOneSpecies_Complex() {
+		try {
+			Model model = getModelForFile("testFiles/export/hsp70.xml", true);
+
+			SpeciesAlias alias = (SpeciesAlias) model.getAliasByAliasId("csa1");
+			ExportColumn columns[] = { ExportColumn.NAME };
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).//
+			column(columns).//
+					complexElementsName(false).//
+					fileType(ExportFileType.TAB_SEPARATED);
+
+			List<String> elements = exporter.getExportStringForOneSpecies(alias, params);
+			assertTrue(elements.contains("HSP70:chaperon"));
+
+			// now the results are concatenated children
+			params.complexElementsName(true);
+
+			elements = exporter.getExportStringForOneSpecies(alias, params);
+			assertTrue(elements.size() > 0);
+			String string = elements.get(0);
+			assertFalse(string.equals("HSP70:chaperon"));
+			assertTrue(string.contains("HSP70"));
+			assertTrue(string.contains("STUB1"));
+			assertTrue(string.contains("DNAJB2"));
+			assertTrue(string.contains("BAG1"));
+
+			// and now check complexes with mix of proteins and molecules
+			alias = (SpeciesAlias) model.getAliasByAliasId("csa3");
+
+			elements = exporter.getExportStringForOneSpecies(alias, params);
+			assertTrue(elements.size() > 0);
+			string = elements.get(0);
+			assertTrue(string.contains("UBA1"));
+			assertTrue(string.contains("UBA6"));
+			assertTrue(string.contains("AMP"));
+
+			elements = exporter.getExportStringForOneSpecies(alias, params.type(Protein.class));
+			assertTrue(elements.size() > 0);
+			string = elements.get(0);
+			assertTrue(string.contains("UBA1"));
+			assertTrue(string.contains("UBA6"));
+			assertFalse(string.contains("AMP"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail("Exception occured");
+		}
+	}
+
+	@Test
+	public void testGetExportStringForOneReaction() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export/reaction.xml", false);
+			Set<CompartmentAlias> aliases = new HashSet<CompartmentAlias>();
+			for (CompartmentAlias alias : model.getCompartmentsAliases()) {
+				if (alias.getTitle().equalsIgnoreCase("Dopamine loaded synaptic vesicle"))
+					aliases.add(alias);
+			}
+
+			Reaction reaction = model.getReactionByReactionId("re2");
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).//
+			fileType(ExportFileType.SIF).//
+					type(Protein.class).//
+					type(ComplexSpecies.class).//
+					fileType(ExportFileType.SIF).//
+					complexElementsName(false).//
+					excluded(aliases);
+
+			String string = exporter.getExportSingleInteractionString(reaction, params).get(0);
+			assertNotNull(string);
+			assertTrue(string.contains("Calcium channel:RIMBP:RIM:MUNC13:RAB"));
+			assertTrue(string.contains("CSP:Hsc70:SGT"));
+			assertTrue(string.contains("SNCA"));
+			assertTrue(string.contains("trans-SNARE complex"));
+			assertFalse(string.contains("VAMP2"));
+
+			params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF).type(ComplexSpecies.class).type(Protein.class);
+			string = exporter.getExportSingleInteractionString(reaction, params).get(0);
+			assertTrue(string.contains("VAMP2"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+
+	}
+
+	@Test
+	public void testGetExportStringForOneReactionInGeneral() {
+		try {
+			Model model = getModelForFile("testFiles/export/reaction.xml", true);
+			Reaction reaction = model.getReactionByReactionId("re2");
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).//
+			fileType(ExportFileType.SIF).//
+					complexElementsName(false).//
+					type(ComplexSpecies.class).type(Protein.class);
+			String string = exporter.getExportSingleInteractionString(reaction, params).get(0);
+			assertNotNull(string);
+			assertTrue(string.contains("Calcium channel:RIMBP:RIM:MUNC13:RAB"));
+			assertTrue(string.contains("CSP:Hsc70:SGT"));
+			assertTrue(string.contains("SNCA"));
+			assertTrue(string.contains("trans-SNARE complex"));
+			assertTrue(string.contains("SNAP25"));
+			assertFalse(string.contains("RAB3A"));
+
+			params.complexElementsName(true);
+			string = exporter.getExportSingleInteractionString(reaction, params).get(0);
+			assertFalse(string.contains("trans-SNARE complex"));
+			assertTrue(string.contains("RAB3A"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail("Exception occured");
+		}
+
+	}
+
+	@Test
+	public void testGetExportStringForOneReactionInGeneralWithOnlyOneElement() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export/reaction.xml", false);
+			Reaction reaction = model.getReactionByReactionId("re11");
+			model.getReactions().clear();
+			model.addReaction(reaction);
+			Set<CompartmentAlias> aliases = new HashSet<CompartmentAlias>();
+			aliases.add((CompartmentAlias) model.getAliasByAliasId("ca1"));
+			ExporterParameters params = new IExporterService.ExporterParameters()
+					.model(model).fileType(ExportFileType.SIF).included("dopamine loaded synaptic vesicle");
+			assertEquals(0, exporter.getExportSingleInteractionString(reaction, params).size());
+
+			params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF);
+			assertEquals(1, exporter.getExportSingleInteractionString(reaction, params).size());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetExportSingleInteractionString_text() {
+		try {
+			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
+			for (Reaction reaction : model.getReactions()) {
+				String str = exporter.getExportSingleInteractionString(
+						reaction, new IExporterService.ExporterParameters().fileType(ExportFileType.TAB_SEPARATED).type(Species.class)).get(0);
+
+				List<String> strings = new ArrayList<String>();
+				strings.add(ReactionLineData.getByReactionType(reaction.getClass()).getCellDesignerString());
+				strings.add(reaction.getIdReaction());
+				for (ReactionNode node : reaction.getReactionNodes()) {
+					strings.add(((Species) node.getElement()).getName());
+
+				}
+				for (String string : strings) {
+					assertTrue("Description \"" + str + "\" doesn't contain " + string + ". reactionId=" + reaction.getIdReaction(), str.contains(string));
+				}
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail("Exception occured");
+		}
+	}
+
+	@Test
+	public void testGetExportComponentAndCompartments() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export/export_model.xml", false);
+			new CreateHierarchyCommand(model, 7, 80).execute();
+			ExporterParameters params = new IExporterService.ExporterParameters()
+					.model(model).fileType(ExportFileType.TAB_SEPARATED).column(ExportColumn.NAME).column(ExportColumn.COMPONENT_NAME)
+					.column(ExportColumn.COMPARTMENT_NAME);
+
+			List<String> list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s1").get(0), params);
+			String desc = list.get(0);
+			String compartment = desc.split("\t")[2];
+			assertEquals("c1", compartment);
+			String component = desc.split("\t")[1];
+			assertEquals("Test3", component);
+
+			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s2").get(0), params);
+			desc = null;
+			for (String string : list) {
+				if (string.contains("Test 1")) {
+					desc = string;
+				}
+			}
+			compartment = desc.split("\t")[2];
+			assertEquals("c2", compartment);
+			component = desc.split("\t")[1];
+			assertEquals("Test 1", component);
+
+			for (String string : list) {
+				if (string.contains("Test2")) {
+					desc = string;
+				}
+			}
+			compartment = desc.split("\t")[2];
+			assertEquals("c2", compartment);
+			component = desc.split("\t")[1];
+			assertEquals("Test2", component);
+
+			for (String string : list) {
+				if (string.contains("Test3")) {
+					desc = string;
+				}
+			}
+			compartment = desc.split("\t")[2];
+			assertEquals("c2", compartment);
+			component = desc.split("\t")[1];
+			assertEquals("Test3", component);
+
+			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s3").get(0), params);
+			boolean ok = false;
+			for (String string : list) {
+				if (string.split("\t")[2].equals("null") && string.split("\t")[1].equals("Test2")) {
+					ok = true;
+				}
+			}
+			assertTrue(ok);
+
+			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s4").get(0), params);
+			desc = list.get(0);
+			compartment = desc.split("\t")[2];
+			assertEquals("null", compartment);
+			component = desc.split("\t")[1];
+			assertEquals("Test3", component);
+
+			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s5").get(0), params);
+			desc = list.get(0);
+			compartment = desc.split("\t")[2];
+			assertEquals("c3", compartment);
+			component = desc.split("\t")[1];
+			assertEquals("null", component);
+
+			list = exporter.getExportStringForOneSpecies(model.getAliasesBySpeciesId("s6").get(0), params);
+			desc = list.get(0);
+			compartment = desc.split("\t")[2];
+			assertEquals("null", compartment);
+			component = desc.split("\t")[1];
+			assertEquals("null", component);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetExportSpeciesStringForTabSeparatedFile2() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
+			ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.ID, ExportColumn.COMPONENT_NAME, ExportColumn.COMPARTMENT_NAME, ExportColumn.TYPE };
+
+			ExporterParameters params = new IExporterService.ExporterParameters()
+					.model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED).type(Object.class);
+
+			// full export (all elements)
+			String string = exporter.getExportSpeciesString(params);
+			String lines[] = string.split("\n");
+			assertTrue("Not enough elements in the result file", lines.length > 1);
+
+			String response = lines[0];
+			String textColumns[] = response.split("\t");
+			assertEquals(columns.length, textColumns.length);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetExportCompartmentsString() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export/export_compartments.xml", false);
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.TAB_SEPARATED).type(Object.class);
+
+			// full export (all compartments)
+			String string = exporter.getExportCompartmentsString(params);
+			String lines[] = string.split("\n");
+			assertTrue("Not enough elements in the result file", lines.length >= 2);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testAllExportColumnsSpecies() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
+			List<ExportColumn> columns = new ArrayList<ExportColumn>();
+			for (ExportColumn column : ExportColumn.values()) {
+				if (column.getClazz().isAssignableFrom(Species.class)) {
+					columns.add(column);
+				}
+			}
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
+
+			// full export (all elements)
+			String string = exporter.getExportSpeciesString(params);
+			assertNotNull(string);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testAllExportColumnsReaction() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false);
+			List<ExportColumn> columns = new ArrayList<ExportColumn>();
+			for (ExportColumn column : ExportColumn.values()) {
+				if (column.getClazz().isAssignableFrom(Reaction.class)) {
+					columns.add(column);
+				}
+			}
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
+
+			// full export (all elements)
+			String string = exporter.getExportInteractionString(params);
+			assertNotNull(string);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testGetTabSeparatedReaction() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export/reaction.xml", false);
+			Set<CompartmentAlias> aliases = new HashSet<CompartmentAlias>();
+			for (CompartmentAlias alias : model.getCompartmentsAliases()) {
+				if (alias.getTitle().equalsIgnoreCase("Dopamine loaded synaptic vesicle"))
+					aliases.add(alias);
+			}
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).//
+			fileType(ExportFileType.TAB_SEPARATED).//
+					column(ExportColumn.REACTION_ID).//
+					column(ExportColumn.REACTION_TYPE).//
+					type(Species.class);
+
+			String string = exporter.getExportInteractionString(params);
+			assertTrue(string.indexOf("STATE_TRANSITION	REACTANT") >= 0);
+			assertTrue(string.indexOf("s2240") >= 0);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+
+	}
+
+	@Test
+	public void test() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export/new_line_file.xml", false);
+			List<ExportColumn> columns = new ArrayList<ExportColumn>();
+			for (ExportColumn column : ExportColumn.values()) {
+				if (column.getClazz().isAssignableFrom(Species.class)) {
+					columns.add(column);
+				}
+			}
+
+			ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED);
+
+			// full export (all elements)
+			String string = exporter.getExportSpeciesString(params);
+			String tmp[] = string.split("\n");
+			for (String string2 : tmp) {
+				assertTrue(string2,columns.size()<=string2.split("\t",-1).length);
+			}
+			assertNotNull(string);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testPubmedSummary() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/export/reaction.xml", false);
+			List<PubmedAnnotatedElementsView> result = exporter.getPublicationModelSummary(model);
+			assertNotNull(result);
+			for (PubmedAnnotatedElementsView pubmedAnnotatedElementsView : result) {
+				assertNotNull(pubmedAnnotatedElementsView.getArticle());
+				assertNotNull(pubmedAnnotatedElementsView.getArticle().getTitle());
+				assertTrue(pubmedAnnotatedElementsView.getElements().size()>0);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+}
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/LayoutServiceTest2.java b/service/src/test/java/lcsb/mapviewer/services/impl/LayoutServiceTest2.java
index 2789022047..8f0dacdddf 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/LayoutServiceTest2.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/LayoutServiceTest2.java
@@ -1,247 +1,247 @@
-package lcsb.mapviewer.services.impl;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-
-import java.awt.Color;
-import java.io.FileInputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.commands.ColorModelCommand;
-import lcsb.mapviewer.common.Pair;
-import lcsb.mapviewer.common.TextFileUtils;
-import lcsb.mapviewer.converter.ConverterParams;
-import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.layout.GeneVariation;
-import lcsb.mapviewer.model.map.layout.GeneVariationColorSchema;
-import lcsb.mapviewer.model.map.layout.GenericColorSchema;
-import lcsb.mapviewer.model.map.layout.ReferenceGenomeType;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.services.interfaces.ILayoutService.CreateLayoutParams;
-import lcsb.mapviewer.services.utils.ColorSchemaReader;
-import lcsb.mapviewer.services.utils.data.ColorSchemaColumn;
-import lcsb.mapviewer.services.utils.data.ColorSchemaType;
-
-public class LayoutServiceTest2 {
-	Logger logger = Logger.getLogger(LayoutServiceTest2.class);
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testValidPreprareTableResultForGeneric() throws Exception {
-		try {
-			class CSR extends ColorSchemaReader {
-				public Collection<ColorSchemaColumn> getSetColorSchemaColumns(Collection<ColorSchema> schemas) {
-					List<ColorSchemaColumn> result = new ArrayList<ColorSchemaColumn>();
-					for (ColorSchemaColumn csc : ColorSchemaColumn.values()) {
-						if (csc.getTypes().contains(ColorSchemaType.GENERIC)) {
-							result.add(csc);
-						}
-					}
-					return result;
-				}
-			}
-			;
-			List<ColorSchema> schemas = new ArrayList<ColorSchema>();
-			ColorSchema cs = new GenericColorSchema();
-			cs.setColor(Color.CYAN);
-			cs.addCompartment("BLA");
-			cs.addIdentifierColumn(new Pair<MiriamType, String>(MiriamType.CAS, "CAS_ID"));
-			cs.setLineWidth(3.3);
-			cs.setMatches(2);
-			cs.setName("UUU");
-			cs.setReactionIdentifier("RE ID");
-			cs.setReverseReaction(true);
-			cs.addType(GenericProtein.class);
-			cs.setValue(1111.1111);
-			schemas.add(cs);
-
-			LayoutService ls = new LayoutService();
-			String result = ls.prepareTableResult(schemas, new CSR());
-			assertNotNull(result);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testValidPreprareTableResultForGeneVariation() throws Exception {
-		try {
-			class CSR extends ColorSchemaReader {
-				public Collection<ColorSchemaColumn> getSetColorSchemaColumns(Collection<ColorSchema> schemas) {
-					List<ColorSchemaColumn> result = new ArrayList<ColorSchemaColumn>();
-					for (ColorSchemaColumn csc : ColorSchemaColumn.values()) {
-						if (csc.getTypes().contains(ColorSchemaType.GENETIC_VARIANT)) {
-							result.add(csc);
-						}
-					}
-					return result;
-				}
-			}
-			;
-			List<ColorSchema> schemas = new ArrayList<ColorSchema>();
-			GeneVariationColorSchema cs = new GeneVariationColorSchema();
-			cs.setColor(Color.CYAN);
-			cs.addCompartment("BLA");
-			cs.addIdentifierColumn(new Pair<MiriamType, String>(MiriamType.CAS, "CAS_ID"));
-			cs.setLineWidth(3.3);
-			cs.setMatches(2);
-			cs.setName("UUU");
-			cs.setReactionIdentifier("RE ID");
-			cs.setReverseReaction(true);
-			cs.addType(GenericProtein.class);
-			cs.setValue(1111.1111);
-			GeneVariation gv = new GeneVariation();
-			gv.setModifiedDna("C");
-			gv.setContig("chr1");
-			gv.setOriginalDna("T");
-			gv.setPosition(12);
-			gv.setReferenceGenomeType(ReferenceGenomeType.UCSC);
-			gv.setReferenceGenomeVersion("hg19");
-			cs.addGeneVariation(gv);
-			GeneVariation gv2 = new GeneVariation();
-			gv2.setModifiedDna("CC");
-			gv2.setContig("chr2");
-			gv2.setOriginalDna("TT");
-			gv2.setPosition(124);
-			gv2.setReferenceGenomeType(ReferenceGenomeType.UCSC);
-			gv2.setReferenceGenomeVersion("hg18");
-			gv2.addReference(new MiriamData(MiriamType.CHEBI, "XXX"));
-			cs.addGeneVariation(gv2);
-			schemas.add(cs);
-
-			LayoutService ls = new LayoutService();
-			String result = ls.prepareTableResult(schemas, new CSR());
-			assertNotNull(result);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testEmptyPreprareTableResultForGeneric() throws Exception {
-		try {
-			class CSR extends ColorSchemaReader {
-				public Collection<ColorSchemaColumn> getSetColorSchemaColumns(Collection<ColorSchema> schemas) {
-					List<ColorSchemaColumn> result = new ArrayList<ColorSchemaColumn>();
-					for (ColorSchemaColumn csc : ColorSchemaColumn.values()) {
-						if (csc.getTypes().contains(ColorSchemaType.GENERIC)) {
-							result.add(csc);
-						}
-					}
-					return result;
-				}
-			}
-			;
-			List<ColorSchema> schemas = new ArrayList<ColorSchema>();
-			ColorSchema cs = new GenericColorSchema();
-			schemas.add(cs);
-
-			LayoutService ls = new LayoutService();
-			String result = ls.prepareTableResult(schemas, new CSR());
-			assertNotNull(result);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testEmptyPreprareTableResultForGeneVariant() throws Exception {
-		try {
-			class CSR extends ColorSchemaReader {
-				public Collection<ColorSchemaColumn> getSetColorSchemaColumns(Collection<ColorSchema> schemas) {
-					List<ColorSchemaColumn> result = new ArrayList<ColorSchemaColumn>();
-					for (ColorSchemaColumn csc : ColorSchemaColumn.values()) {
-						if (csc.getTypes().contains(ColorSchemaType.GENETIC_VARIANT)) {
-							result.add(csc);
-						}
-					}
-					return result;
-				}
-			}
-			;
-			List<ColorSchema> schemas = new ArrayList<ColorSchema>();
-			ColorSchema cs = new GeneVariationColorSchema();
-			schemas.add(cs);
-
-			LayoutService ls = new LayoutService();
-			String result = ls.prepareTableResult(schemas, new CSR());
-			assertNotNull(result);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testGetLayoutAliasesForInvalidAlias() throws Exception {
-		try {
-
-			Model model = new CellDesignerXmlParser().createModel(new ConverterParams().filename("testFiles/coloring/problematicModel2.xml"));
-
-			FileInputStream fis = new FileInputStream("testFiles/coloring/problematicSchema2.txt");
-			CreateLayoutParams params = new CreateLayoutParams().name("Test").//
-					directory("testDir").//
-					model(model).//
-					colorInputStream(fis).//
-					async(false);
-			ColorSchemaReader reader = new ColorSchemaReader();
-			final Collection<ColorSchema> schemas = reader
-					.readColorSchema(params.getColorInputStream(), TextFileUtils.getHeaderParametersFromFile(params.getColorInputStream()));
-
-			ColorModelCommand command = new ColorModelCommand(model, schemas);
-			command.execute();
-
-			command.getModifiedElements();
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testSchemaWithCompartments() throws Exception {
-		try {
-			FileInputStream fis = new FileInputStream("testFiles/coloring/schemaWithCompartment.txt");
-			ColorSchemaReader reader = new ColorSchemaReader();
-			final Collection<ColorSchema> schemas = reader.readColorSchema(fis, new HashMap<>());
-			for (ColorSchema colorSchema : schemas) {
-				for (String string : colorSchema.getCompartments()) {
-					assertNotNull(string);
-					assertFalse(string.isEmpty());
-				}
-			}
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
+package lcsb.mapviewer.services.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
+import java.awt.Color;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.commands.ColorModelCommand;
+import lcsb.mapviewer.common.Pair;
+import lcsb.mapviewer.common.TextFileUtils;
+import lcsb.mapviewer.converter.ConverterParams;
+import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
+import lcsb.mapviewer.model.map.layout.ColorSchema;
+import lcsb.mapviewer.model.map.layout.GeneVariation;
+import lcsb.mapviewer.model.map.layout.GeneVariationColorSchema;
+import lcsb.mapviewer.model.map.layout.GenericColorSchema;
+import lcsb.mapviewer.model.map.layout.ReferenceGenomeType;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.services.interfaces.ILayoutService.CreateLayoutParams;
+import lcsb.mapviewer.services.utils.ColorSchemaReader;
+import lcsb.mapviewer.services.utils.data.ColorSchemaColumn;
+import lcsb.mapviewer.services.utils.data.ColorSchemaType;
+
+public class LayoutServiceTest2 {
+	Logger logger = Logger.getLogger(LayoutServiceTest2.class);
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testValidPreprareTableResultForGeneric() throws Exception {
+		try {
+			class CSR extends ColorSchemaReader {
+				public Collection<ColorSchemaColumn> getSetColorSchemaColumns(Collection<ColorSchema> schemas) {
+					List<ColorSchemaColumn> result = new ArrayList<ColorSchemaColumn>();
+					for (ColorSchemaColumn csc : ColorSchemaColumn.values()) {
+						if (csc.getTypes().contains(ColorSchemaType.GENERIC)) {
+							result.add(csc);
+						}
+					}
+					return result;
+				}
+			}
+			;
+			List<ColorSchema> schemas = new ArrayList<ColorSchema>();
+			ColorSchema cs = new GenericColorSchema();
+			cs.setColor(Color.CYAN);
+			cs.addCompartment("BLA");
+			cs.addIdentifierColumn(new Pair<MiriamType, String>(MiriamType.CAS, "CAS_ID"));
+			cs.setLineWidth(3.3);
+			cs.setMatches(2);
+			cs.setName("UUU");
+			cs.setReactionIdentifier("RE ID");
+			cs.setReverseReaction(true);
+			cs.addType(GenericProtein.class);
+			cs.setValue(1111.1111);
+			schemas.add(cs);
+
+			LayoutService ls = new LayoutService();
+			String result = ls.prepareTableResult(schemas, new CSR());
+			assertNotNull(result);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+
+	}
+
+	@Test
+	public void testValidPreprareTableResultForGeneVariation() throws Exception {
+		try {
+			class CSR extends ColorSchemaReader {
+				public Collection<ColorSchemaColumn> getSetColorSchemaColumns(Collection<ColorSchema> schemas) {
+					List<ColorSchemaColumn> result = new ArrayList<ColorSchemaColumn>();
+					for (ColorSchemaColumn csc : ColorSchemaColumn.values()) {
+						if (csc.getTypes().contains(ColorSchemaType.GENETIC_VARIANT)) {
+							result.add(csc);
+						}
+					}
+					return result;
+				}
+			}
+			;
+			List<ColorSchema> schemas = new ArrayList<ColorSchema>();
+			GeneVariationColorSchema cs = new GeneVariationColorSchema();
+			cs.setColor(Color.CYAN);
+			cs.addCompartment("BLA");
+			cs.addIdentifierColumn(new Pair<MiriamType, String>(MiriamType.CAS, "CAS_ID"));
+			cs.setLineWidth(3.3);
+			cs.setMatches(2);
+			cs.setName("UUU");
+			cs.setReactionIdentifier("RE ID");
+			cs.setReverseReaction(true);
+			cs.addType(GenericProtein.class);
+			cs.setValue(1111.1111);
+			GeneVariation gv = new GeneVariation();
+			gv.setModifiedDna("C");
+			gv.setContig("chr1");
+			gv.setOriginalDna("T");
+			gv.setPosition(12);
+			gv.setReferenceGenomeType(ReferenceGenomeType.UCSC);
+			gv.setReferenceGenomeVersion("hg19");
+			cs.addGeneVariation(gv);
+			GeneVariation gv2 = new GeneVariation();
+			gv2.setModifiedDna("CC");
+			gv2.setContig("chr2");
+			gv2.setOriginalDna("TT");
+			gv2.setPosition(124);
+			gv2.setReferenceGenomeType(ReferenceGenomeType.UCSC);
+			gv2.setReferenceGenomeVersion("hg18");
+			gv2.addReference(new MiriamData(MiriamType.CHEBI, "XXX"));
+			cs.addGeneVariation(gv2);
+			schemas.add(cs);
+
+			LayoutService ls = new LayoutService();
+			String result = ls.prepareTableResult(schemas, new CSR());
+			assertNotNull(result);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+
+	}
+
+	@Test
+	public void testEmptyPreprareTableResultForGeneric() throws Exception {
+		try {
+			class CSR extends ColorSchemaReader {
+				public Collection<ColorSchemaColumn> getSetColorSchemaColumns(Collection<ColorSchema> schemas) {
+					List<ColorSchemaColumn> result = new ArrayList<ColorSchemaColumn>();
+					for (ColorSchemaColumn csc : ColorSchemaColumn.values()) {
+						if (csc.getTypes().contains(ColorSchemaType.GENERIC)) {
+							result.add(csc);
+						}
+					}
+					return result;
+				}
+			}
+			;
+			List<ColorSchema> schemas = new ArrayList<ColorSchema>();
+			ColorSchema cs = new GenericColorSchema();
+			schemas.add(cs);
+
+			LayoutService ls = new LayoutService();
+			String result = ls.prepareTableResult(schemas, new CSR());
+			assertNotNull(result);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+
+	}
+
+	@Test
+	public void testEmptyPreprareTableResultForGeneVariant() throws Exception {
+		try {
+			class CSR extends ColorSchemaReader {
+				public Collection<ColorSchemaColumn> getSetColorSchemaColumns(Collection<ColorSchema> schemas) {
+					List<ColorSchemaColumn> result = new ArrayList<ColorSchemaColumn>();
+					for (ColorSchemaColumn csc : ColorSchemaColumn.values()) {
+						if (csc.getTypes().contains(ColorSchemaType.GENETIC_VARIANT)) {
+							result.add(csc);
+						}
+					}
+					return result;
+				}
+			}
+			;
+			List<ColorSchema> schemas = new ArrayList<ColorSchema>();
+			ColorSchema cs = new GeneVariationColorSchema();
+			schemas.add(cs);
+
+			LayoutService ls = new LayoutService();
+			String result = ls.prepareTableResult(schemas, new CSR());
+			assertNotNull(result);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+
+	}
+
+	@Test
+	public void testGetLayoutAliasesForInvalidAlias() throws Exception {
+		try {
+
+			Model model = new CellDesignerXmlParser().createModel(new ConverterParams().filename("testFiles/coloring/problematicModel2.xml"));
+
+			FileInputStream fis = new FileInputStream("testFiles/coloring/problematicSchema2.txt");
+			CreateLayoutParams params = new CreateLayoutParams().name("Test").//
+					directory("testDir").//
+					model(model).//
+					colorInputStream(fis).//
+					async(false);
+			ColorSchemaReader reader = new ColorSchemaReader();
+			final Collection<ColorSchema> schemas = reader
+					.readColorSchema(params.getColorInputStream(), TextFileUtils.getHeaderParametersFromFile(params.getColorInputStream()));
+
+			ColorModelCommand command = new ColorModelCommand(model, schemas);
+			command.execute();
+
+			command.getModifiedElements();
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testSchemaWithCompartments() throws Exception {
+		try {
+			FileInputStream fis = new FileInputStream("testFiles/coloring/schemaWithCompartment.txt");
+			ColorSchemaReader reader = new ColorSchemaReader();
+			final Collection<ColorSchema> schemas = reader.readColorSchema(fis, new HashMap<>());
+			for (ColorSchema colorSchema : schemas) {
+				for (String string : colorSchema.getCompartments()) {
+					assertNotNull(string);
+					assertFalse(string.isEmpty());
+				}
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+}
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/LogServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/LogServiceTest.java
index 5a6d651f39..f372dffd72 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/LogServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/LogServiceTest.java
@@ -1,134 +1,134 @@
-package lcsb.mapviewer.services.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
-import java.util.Set;
-
-import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.log.GenericLog;
-import lcsb.mapviewer.model.log.LogType;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.graph.DataMining;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.services.ServiceTestFunctions;
-import lcsb.mapviewer.services.interfaces.ILogService.LogParams;
-
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.test.annotation.Rollback;
-
-@Rollback(true)
-public class LogServiceTest extends ServiceTestFunctions {
-
-	static Logger					logger	= Logger.getLogger(LogServiceTest.class);
-
-	private Model					model;
-	private Project				project;
-	private Set<Element>	nodes;
-	private Element				node;
-	private DataMining		mc;
-
-	@Before
-	public void setUp() throws Exception {
-		try {
-			model = getModelForFile("testFiles/graph_path_example3.xml", false);
-			project = new Project();
-			project.addModel(model);
-			projectDao.add(project);
-			modelDao.add(model);
-			nodes = model.getElements();
-			node = nodes.iterator().next();
-
-			mc = new DataMining();
-			mc.setElement(node);
-			missingConnectionDao.add(mc);
-
-			createUser();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@After
-	public void tearDown() throws Exception {
-		try {
-			missingConnectionDao.delete(mc);
-			modelDao.delete(model);
-			projectDao.delete(project);
-			userDao.delete(user);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testLog1() throws Exception {
-		try {
-			logService.setLoggedUser(null);
-			LogParams params = new LogParams().type(LogType.ADD_MISSING_CONNECTION).description("bla").object(mc);
-			GenericLog log = logService.log(params);
-			assertEquals(userService.getUserByLogin(Configuration.ANONYMOUS_LOGIN), log.getUser());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testLog2() throws Exception {
-		try {
-			LogParams params = new LogParams().type(LogType.ADD_MISSING_CONNECTION).description("bla").user(user);
-			GenericLog log = logService.log(params);
-			logDao.delete(log);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testLog3() {
-		try {
-			LogParams params = new LogParams().type(LogType.ADD_MISSING_CONNECTION).description("bla").user(user).object(new DataMining());
-			logService.log(params);
-			fail("Exception expected");
-		} catch (InvalidArgumentException e) {
-
-		}
-	}
-
-	@Test
-	public void testLog4() {
-		try {
-			LogParams params = new LogParams().description("bla").user(user).object(mc);
-			logService.log(params);
-			fail("Exception expected");
-		} catch (InvalidArgumentException e) {
-
-		}
-	}
-
-	@Test
-	public void testLog5() throws Exception {
-		try {
-			LogParams params = new LogParams().type(LogType.ADD_MISSING_CONNECTION).description("bla").user(user).object(mc).object(mc);
-			GenericLog log = logService.log(params);
-			assertNotNull(log);
-			assertNotNull(log.getId());
-			assertNotNull(logDao.getById(log.getId()));
-			logDao.delete(log);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
+package lcsb.mapviewer.services.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.util.Set;
+
+import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.model.Project;
+import lcsb.mapviewer.model.log.GenericLog;
+import lcsb.mapviewer.model.log.LogType;
+import lcsb.mapviewer.model.map.graph.DataMining;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.services.ServiceTestFunctions;
+import lcsb.mapviewer.services.interfaces.ILogService.LogParams;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.test.annotation.Rollback;
+
+@Rollback(true)
+public class LogServiceTest extends ServiceTestFunctions {
+
+	static Logger					logger	= Logger.getLogger(LogServiceTest.class);
+
+	private Model					model;
+	private Project				project;
+	private Set<Element>	nodes;
+	private Element				node;
+	private DataMining		mc;
+
+	@Before
+	public void setUp() throws Exception {
+		try {
+			model = getModelForFile("testFiles/graph_path_example3.xml", false);
+			project = new Project();
+			project.addModel(model);
+			projectDao.add(project);
+			modelDao.add(model);
+			nodes = model.getElements();
+			node = nodes.iterator().next();
+
+			mc = new DataMining();
+			mc.setElement(node);
+			missingConnectionDao.add(mc);
+
+			createUser();
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		try {
+			missingConnectionDao.delete(mc);
+			modelDao.delete(model);
+			projectDao.delete(project);
+			userDao.delete(user);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testLog1() throws Exception {
+		try {
+			logService.setLoggedUser(null);
+			LogParams params = new LogParams().type(LogType.ADD_MISSING_CONNECTION).description("bla").object(mc);
+			GenericLog log = logService.log(params);
+			assertEquals(userService.getUserByLogin(Configuration.ANONYMOUS_LOGIN), log.getUser());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testLog2() throws Exception {
+		try {
+			LogParams params = new LogParams().type(LogType.ADD_MISSING_CONNECTION).description("bla").user(user);
+			GenericLog log = logService.log(params);
+			logDao.delete(log);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testLog3() {
+		try {
+			LogParams params = new LogParams().type(LogType.ADD_MISSING_CONNECTION).description("bla").user(user).object(new DataMining());
+			logService.log(params);
+			fail("Exception expected");
+		} catch (InvalidArgumentException e) {
+
+		}
+	}
+
+	@Test
+	public void testLog4() {
+		try {
+			LogParams params = new LogParams().description("bla").user(user).object(mc);
+			logService.log(params);
+			fail("Exception expected");
+		} catch (InvalidArgumentException e) {
+
+		}
+	}
+
+	@Test
+	public void testLog5() throws Exception {
+		try {
+			LogParams params = new LogParams().type(LogType.ADD_MISSING_CONNECTION).description("bla").user(user).object(mc).object(mc);
+			GenericLog log = logService.log(params);
+			assertNotNull(log);
+			assertNotNull(log.getId());
+			assertNotNull(logDao.getById(log.getId()));
+			logDao.delete(log);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+}
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
index f48ace29ad..bf37237855 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
@@ -29,20 +29,20 @@ import lcsb.mapviewer.commands.CopyCommand;
 import lcsb.mapviewer.converter.ComplexZipConverter;
 import lcsb.mapviewer.converter.ComplexZipConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.converter.zip.ModelZipEntryFile;
 import lcsb.mapviewer.converter.zip.ZipEntryFile;
 import lcsb.mapviewer.converter.zip.ZipEntryFileFactory;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.ProjectStatus;
 import lcsb.mapviewer.model.map.AnnotatedObject;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
 import lcsb.mapviewer.model.map.model.SubmodelType;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.model.user.ObjectPrivilege;
 import lcsb.mapviewer.model.user.PrivilegeType;
 import lcsb.mapviewer.model.user.User;
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java
index a677f5a753..4f1bb90793 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java
@@ -18,6 +18,16 @@ import org.junit.Test;
 
 import lcsb.mapviewer.annotation.data.Drug;
 import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
@@ -29,16 +39,6 @@ import lcsb.mapviewer.model.map.layout.alias.SpeciesAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Unknown;
 import lcsb.mapviewer.services.ServiceTestFunctions;
 import lcsb.mapviewer.services.interfaces.ISearchService.CoordinatesSearchParams;
 import lcsb.mapviewer.services.search.data.FullAliasView;
diff --git a/service/src/test/java/lcsb/mapviewer/services/search/SearchResultFactoryTest.java b/service/src/test/java/lcsb/mapviewer/services/search/SearchResultFactoryTest.java
index 930de2e986..e144cedee6 100644
--- a/service/src/test/java/lcsb/mapviewer/services/search/SearchResultFactoryTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/search/SearchResultFactoryTest.java
@@ -8,10 +8,10 @@ import org.junit.Before;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.services.ServiceTestFunctions;
 import lcsb.mapviewer.services.search.db.DbSearchCriteria;
 import lcsb.mapviewer.services.search.db.GeneRow;
diff --git a/service/src/test/java/lcsb/mapviewer/services/search/data/FullAliasViewFactoryTest.java b/service/src/test/java/lcsb/mapviewer/services/search/data/FullAliasViewFactoryTest.java
index cea3dbadde..efe150fa18 100644
--- a/service/src/test/java/lcsb/mapviewer/services/search/data/FullAliasViewFactoryTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/search/data/FullAliasViewFactoryTest.java
@@ -21,11 +21,14 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import lcsb.mapviewer.annotation.data.Chebi;
 import lcsb.mapviewer.annotation.services.annotators.ChebiAnnotator;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Compartment;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
 import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.agregator.Compartment;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
@@ -37,9 +40,6 @@ import lcsb.mapviewer.model.map.reaction.Product;
 import lcsb.mapviewer.model.map.reaction.Reactant;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.NegativeInfluenceReaction;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.services.ServiceTestFunctions;
 import lcsb.mapviewer.services.overlay.ChebiTreeRow;
 
diff --git a/service/src/test/java/lcsb/mapviewer/services/search/db/chemical/ChemicalServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/search/db/chemical/ChemicalServiceTest.java
index be4ba23f73..5806f92d3e 100644
--- a/service/src/test/java/lcsb/mapviewer/services/search/db/chemical/ChemicalServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/search/db/chemical/ChemicalServiceTest.java
@@ -1,101 +1,101 @@
-package lcsb.mapviewer.services.search.db.chemical;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.services.ServiceTestFunctions;
-import lcsb.mapviewer.services.search.db.DbSearchCriteria;
-
-public class ChemicalServiceTest extends ServiceTestFunctions {
-	Logger logger = Logger.getLogger(ChemicalServiceTest.class);
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	/**
-	 * @throws Exception
-	 */
-	@Test
-	public void testgetPDChemicalByName() throws Exception {
-		try {
-			List<ChemicalView> result = null;
-			MiriamData pdDiseaseID = new MiriamData(MiriamType.MESH_2012, "D010300");
-
-			List<String> names = new ArrayList<String>();
-			names.add("Dopamine");
-			names.add("2-(2-furanyl)-7-(2-(4-(4-(2-methoxyethoxy)phenyl)-1-piperazinyl)ethyl)-7H-pyrazolo(4,3-e)(1,2,4)triazolo(1,5-c)pyrimidine-5-amine");
-			names.add("Anti-Inflammatory Agents, Non-Steroidal");
-			names.add("2-furanyl");
-			names.add(null);
-			result = chemicalService.getByNames(names, new DbSearchCriteria().disease(pdDiseaseID));
-			assertNotNull(result);
-			assertTrue(!result.isEmpty());
-			assertTrue(result.size() == 3);
-			names.clear();
-			names.add("2-furanyl");
-			result = chemicalService.getByNames(names, new DbSearchCriteria().disease(pdDiseaseID));
-			assertNotNull(result);
-			assertTrue(result.isEmpty());
-
-			assertEquals("No warnings expected.", 0, getWarnings().size());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testgetPDChemicalByName2() throws Exception {
-		try {
-			MiriamData pdDiseaseID = new MiriamData(MiriamType.MESH_2012, "D010300");
-			String name = "Amphetamine";
-			ChemicalView result = chemicalService.getByName(name, new DbSearchCriteria().disease(pdDiseaseID));
-			assertNotNull(result);
-			assertEquals("D000661", result.getSourceLink().getName());
-
-			assertEquals("No warnings expected.", 0, getWarnings().size());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testSearchByElements4() throws Exception {
-		try {
-			List<Element> elements = new ArrayList<Element>();
-			Rna protein = new Rna();
-			protein.setName("GDNF");
-			elements.add(protein);
-
-			List<ChemicalView> chemicals = chemicalService.getForTargets(elements, new DbSearchCriteria().disease(new MiriamData(MiriamType.MESH_2012, "D010300")));
-			assertNotNull(chemicals);
-			assertTrue(chemicals.size() > 0);
-
-			assertEquals("No warnings expected.", 0, getWarnings().size());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-}
+package lcsb.mapviewer.services.search.db.chemical;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
+import lcsb.mapviewer.services.ServiceTestFunctions;
+import lcsb.mapviewer.services.search.db.DbSearchCriteria;
+
+public class ChemicalServiceTest extends ServiceTestFunctions {
+	Logger logger = Logger.getLogger(ChemicalServiceTest.class);
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * @throws Exception
+	 */
+	@Test
+	public void testgetPDChemicalByName() throws Exception {
+		try {
+			List<ChemicalView> result = null;
+			MiriamData pdDiseaseID = new MiriamData(MiriamType.MESH_2012, "D010300");
+
+			List<String> names = new ArrayList<String>();
+			names.add("Dopamine");
+			names.add("2-(2-furanyl)-7-(2-(4-(4-(2-methoxyethoxy)phenyl)-1-piperazinyl)ethyl)-7H-pyrazolo(4,3-e)(1,2,4)triazolo(1,5-c)pyrimidine-5-amine");
+			names.add("Anti-Inflammatory Agents, Non-Steroidal");
+			names.add("2-furanyl");
+			names.add(null);
+			result = chemicalService.getByNames(names, new DbSearchCriteria().disease(pdDiseaseID));
+			assertNotNull(result);
+			assertTrue(!result.isEmpty());
+			assertTrue(result.size() == 3);
+			names.clear();
+			names.add("2-furanyl");
+			result = chemicalService.getByNames(names, new DbSearchCriteria().disease(pdDiseaseID));
+			assertNotNull(result);
+			assertTrue(result.isEmpty());
+
+			assertEquals("No warnings expected.", 0, getWarnings().size());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testgetPDChemicalByName2() throws Exception {
+		try {
+			MiriamData pdDiseaseID = new MiriamData(MiriamType.MESH_2012, "D010300");
+			String name = "Amphetamine";
+			ChemicalView result = chemicalService.getByName(name, new DbSearchCriteria().disease(pdDiseaseID));
+			assertNotNull(result);
+			assertEquals("D000661", result.getSourceLink().getName());
+
+			assertEquals("No warnings expected.", 0, getWarnings().size());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testSearchByElements4() throws Exception {
+		try {
+			List<Element> elements = new ArrayList<Element>();
+			Rna protein = new Rna();
+			protein.setName("GDNF");
+			elements.add(protein);
+
+			List<ChemicalView> chemicals = chemicalService.getForTargets(elements, new DbSearchCriteria().disease(new MiriamData(MiriamType.MESH_2012, "D010300")));
+			assertNotNull(chemicals);
+			assertTrue(chemicals.size() > 0);
+
+			assertEquals("No warnings expected.", 0, getWarnings().size());
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+
+	}
+
+}
diff --git a/service/src/test/java/lcsb/mapviewer/services/search/db/drug/DrugServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/search/db/drug/DrugServiceTest.java
index 6c1aecbfa2..355a1dd62e 100644
--- a/service/src/test/java/lcsb/mapviewer/services/search/db/drug/DrugServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/search/db/drug/DrugServiceTest.java
@@ -16,17 +16,17 @@ import lcsb.mapviewer.annotation.services.TaxonomyBackend;
 import lcsb.mapviewer.converter.ComplexZipConverter;
 import lcsb.mapviewer.converter.ComplexZipConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.GenericProtein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
 import lcsb.mapviewer.converter.zip.ModelZipEntryFile;
 import lcsb.mapviewer.converter.zip.ZipEntryFile;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.model.SubmodelType;
-import lcsb.mapviewer.model.map.species.GenericProtein;
-import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.services.ServiceTestFunctions;
 import lcsb.mapviewer.services.search.db.TargetView;
 import lcsb.mapviewer.services.search.db.DbSearchCriteria;
diff --git a/service/src/test/java/lcsb/mapviewer/services/search/db/drug/DrugViewFactoryTest.java b/service/src/test/java/lcsb/mapviewer/services/search/db/drug/DrugViewFactoryTest.java
index d82ef8d9b6..d6b93643f6 100644
--- a/service/src/test/java/lcsb/mapviewer/services/search/db/drug/DrugViewFactoryTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/search/db/drug/DrugViewFactoryTest.java
@@ -1,155 +1,155 @@
-package lcsb.mapviewer.services.search.db.drug;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import lcsb.mapviewer.annotation.data.Drug;
-import lcsb.mapviewer.annotation.data.Target;
-import lcsb.mapviewer.annotation.data.TargetType;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.services.ServiceTestFunctions;
-import lcsb.mapviewer.services.overlay.IconManager;
-import lcsb.mapviewer.services.search.data.ElementIdentifier;
-import lcsb.mapviewer.services.search.db.TargetDetails;
-import lcsb.mapviewer.services.search.db.TargetView;
-import lcsb.mapviewer.services.search.db.TargetViewFactory;
-import lcsb.mapviewer.services.view.AnnotationView;
-import lcsb.mapviewer.services.view.AnnotationViewFactory;
-
-public class DrugViewFactoryTest extends ServiceTestFunctions {
-
-	@Autowired
-	TargetViewFactory			targetViewFactory;
-
-	Logger								logger = Logger.getLogger(DrugViewFactoryTest.class);
-
-	@Autowired
-	AnnotationViewFactory	avFactory;
-
-	@Autowired
-	DrugViewFactory				dvf;
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testGeneToOverlayList() throws Exception {
-		try {
-			Model model = getModelForFile("testFiles/drug_target.xml", true);
-			model.setTileSize(256);
-			List<Model> models = new ArrayList<>();
-			models.add(model);
-
-			AnnotationView annotation = avFactory.create(new MiriamData());
-			annotation.setName("M");
-
-			List<ElementIdentifier> overlays = dvf.geneToOverlayList(annotation, IconManager.getInstance().getEmpyIcon(), models);
-			assertEquals(1, overlays.size());
-
-			annotation.setName("GRIN2B");
-			overlays = dvf.geneToOverlayList(annotation, IconManager.getInstance().getEmpyIcon(), models);
-			assertEquals(3, overlays.size());
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testComplexToOverlayList() throws Exception {
-		try {
-			Drug drug = chemblParser.findDrug("AMANTADINE");
-			Target exampleTarget = null;
-			assertTrue(drug.getTargets().size() > 0);
-			for (Target target : drug.getTargets()) {
-				if (target.getName().equals("Glutamate [NMDA] receptor")) {
-					target.setType(TargetType.COMPLEX_PROTEIN);
-					exampleTarget = target;
-				}
-				logger.debug(target);
-			}
-			assertNotNull(exampleTarget);
-			Model model = getModelForFile("testFiles/drug_target.xml", true);
-			model.setTileSize(256);
-			List<Model> models = new ArrayList<>();
-			models.add(model);
-			TargetView view = targetViewFactory.create(exampleTarget);
-			view.setIcon(IconManager.getInstance().getEmpyIcon());
-
-			List<ElementIdentifier> overlays = dvf.complexToOverlayList(view, models);
-			assertEquals(2, overlays.size());
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testgetElementInformationForResult() throws Exception {
-		try {
-			Drug drug = chemblParser.findDrug("AMANTADINE");
-			Model model = getModelForFile("testFiles/drug_target.xml", false);
-			Species species = model.getSpeciesBySpeciesId("s9");
-			species.setName("M");
-			Alias alias = model.getAliasesBySpeciesId(species.getElementId()).get(0);
-			alias.setId(12);
-			model.removeAlias(alias);
-			model.addAlias(alias);
-			ElementIdentifier ei = new ElementIdentifier(alias, null);
-			model.setTileSize(256);
-			List<Model> models = new ArrayList<>();
-			models.add(model);
-			DrugView view = dvf.create(drug);
-			TargetDetails result = dvf.getElementInformationForResult(view.getTargetRows(), ei, model);
-			assertNotNull(result);
-			assertFalse(result.getDatabaseSource().equals(result.getReferences().get(0)));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testCreateEmpty() throws Exception {
-		try {
-			Object object = dvf.create(null);
-			assertNotNull(object);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testCreateGson() throws Exception {
-		try {
-			DrugView object = dvf.create(null);
-			assertNotNull(dvf.createGson(object));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
+package lcsb.mapviewer.services.search.db.drug;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import lcsb.mapviewer.annotation.data.Drug;
+import lcsb.mapviewer.annotation.data.Target;
+import lcsb.mapviewer.annotation.data.TargetType;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.services.ServiceTestFunctions;
+import lcsb.mapviewer.services.overlay.IconManager;
+import lcsb.mapviewer.services.search.data.ElementIdentifier;
+import lcsb.mapviewer.services.search.db.TargetDetails;
+import lcsb.mapviewer.services.search.db.TargetView;
+import lcsb.mapviewer.services.search.db.TargetViewFactory;
+import lcsb.mapviewer.services.view.AnnotationView;
+import lcsb.mapviewer.services.view.AnnotationViewFactory;
+
+public class DrugViewFactoryTest extends ServiceTestFunctions {
+
+	@Autowired
+	TargetViewFactory			targetViewFactory;
+
+	Logger								logger = Logger.getLogger(DrugViewFactoryTest.class);
+
+	@Autowired
+	AnnotationViewFactory	avFactory;
+
+	@Autowired
+	DrugViewFactory				dvf;
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testGeneToOverlayList() throws Exception {
+		try {
+			Model model = getModelForFile("testFiles/drug_target.xml", true);
+			model.setTileSize(256);
+			List<Model> models = new ArrayList<>();
+			models.add(model);
+
+			AnnotationView annotation = avFactory.create(new MiriamData());
+			annotation.setName("M");
+
+			List<ElementIdentifier> overlays = dvf.geneToOverlayList(annotation, IconManager.getInstance().getEmpyIcon(), models);
+			assertEquals(1, overlays.size());
+
+			annotation.setName("GRIN2B");
+			overlays = dvf.geneToOverlayList(annotation, IconManager.getInstance().getEmpyIcon(), models);
+			assertEquals(3, overlays.size());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testComplexToOverlayList() throws Exception {
+		try {
+			Drug drug = chemblParser.findDrug("AMANTADINE");
+			Target exampleTarget = null;
+			assertTrue(drug.getTargets().size() > 0);
+			for (Target target : drug.getTargets()) {
+				if (target.getName().equals("Glutamate [NMDA] receptor")) {
+					target.setType(TargetType.COMPLEX_PROTEIN);
+					exampleTarget = target;
+				}
+				logger.debug(target);
+			}
+			assertNotNull(exampleTarget);
+			Model model = getModelForFile("testFiles/drug_target.xml", true);
+			model.setTileSize(256);
+			List<Model> models = new ArrayList<>();
+			models.add(model);
+			TargetView view = targetViewFactory.create(exampleTarget);
+			view.setIcon(IconManager.getInstance().getEmpyIcon());
+
+			List<ElementIdentifier> overlays = dvf.complexToOverlayList(view, models);
+			assertEquals(2, overlays.size());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testgetElementInformationForResult() throws Exception {
+		try {
+			Drug drug = chemblParser.findDrug("AMANTADINE");
+			Model model = getModelForFile("testFiles/drug_target.xml", false);
+			Species species = model.getSpeciesBySpeciesId("s9");
+			species.setName("M");
+			Alias alias = model.getAliasesBySpeciesId(species.getElementId()).get(0);
+			alias.setId(12);
+			model.removeAlias(alias);
+			model.addAlias(alias);
+			ElementIdentifier ei = new ElementIdentifier(alias, null);
+			model.setTileSize(256);
+			List<Model> models = new ArrayList<>();
+			models.add(model);
+			DrugView view = dvf.create(drug);
+			TargetDetails result = dvf.getElementInformationForResult(view.getTargetRows(), ei, model);
+			assertNotNull(result);
+			assertFalse(result.getDatabaseSource().equals(result.getReferences().get(0)));
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testCreateEmpty() throws Exception {
+		try {
+			Object object = dvf.create(null);
+			assertNotNull(object);
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+	@Test
+	public void testCreateGson() throws Exception {
+		try {
+			DrugView object = dvf.create(null);
+			assertNotNull(dvf.createGson(object));
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+}
diff --git a/service/src/test/java/lcsb/mapviewer/services/utils/graph/MissingConnectionDaoTest.java b/service/src/test/java/lcsb/mapviewer/services/utils/graph/MissingConnectionDaoTest.java
index 6c51589a57..fd9fef970f 100644
--- a/service/src/test/java/lcsb/mapviewer/services/utils/graph/MissingConnectionDaoTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/utils/graph/MissingConnectionDaoTest.java
@@ -1,103 +1,103 @@
-package lcsb.mapviewer.services.utils.graph;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.Collection;
-
-import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.graph.DataMining;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.services.ServiceTestFunctions;
-
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class MissingConnectionDaoTest extends ServiceTestFunctions {
-	static Logger										logger	= Logger.getLogger(MissingConnectionDaoTest.class);
-
-	private Model										model;
-	private Collection<Element>	nodes;
-
-	private Project	project;
-
-	@Before
-	public void setUp() throws Exception {
-		project = new Project();
-		projectDao.add(project);
-		dbUtils.setAutoFlush(false);
-		model =getModelForFile("testFiles/graph_path_example.xml",false);
-		project.addModel(model);
-		modelDao.add((Model) model);
-
-		nodes = model.getElements();
-	}
-
-	@After
-	public void tearDown() throws Exception {
-		modelDao.delete((Model) model);
-		dbUtils.setAutoFlush(true);
-		projectDao.delete(project);
-	}
-
-	@Test
-	public void testGetMissingConnections() {
-		try {
-			Element node = nodes.iterator().next();
-
-			DataMining mc = new DataMining();
-			mc.setDescription("desc a");
-			mc.setElement(node);
-			mc.addReference(new MiriamData(MiriamType.PUBMED, "12345"));
-			mc.addReference(new MiriamData(MiriamType.PUBMED, "123456"));
-
-			missingConnectionDao.add(mc);
-
-			DataMining mc2 = new DataMining();
-			mc2.setDescription("desc ab");
-			mc2.setElement(node);
-			mc2.addReference(new MiriamData(MiriamType.PUBMED, "323456"));
-
-			missingConnectionDao.add(mc2);
-			missingConnectionDao.flush();
-			missingConnectionDao.evict(mc);
-			missingConnectionDao.evict(mc2);
-			
-			Collection<DataMining> collection = missingConnectionDao.getMissingConnectionForElement(node);
-
-			assertNotNull(collection);
-
-			DataMining mc3 = null;
-			DataMining mc4 = null;
-			
-			assertEquals(2,collection.size());
-
-			for (DataMining missingConnection : collection) {
-				if (mc3 == null)
-					mc3 = missingConnection;
-				else if (mc4 == null)
-					mc4 = missingConnection;
-				else
-					fail("Incorrect number of elemenets in collection");
-			}
-
-			assertTrue("invalid number of references: "+mc3.getReferences().size(),mc3.getReferences().size() == 2 || mc3.getReferences().size() == 1);
-			assertTrue("invalid number of references: "+mc4.getReferences().size(),mc4.getReferences().size() == 2 || mc4.getReferences().size() == 1);
-
-			missingConnectionDao.delete(mc3);
-			missingConnectionDao.delete(mc4);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			fail("Unknown exception occured");
-		}
-	}
-
-}
+package lcsb.mapviewer.services.utils.graph;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Collection;
+
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.model.Project;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
+import lcsb.mapviewer.model.map.graph.DataMining;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.services.ServiceTestFunctions;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class MissingConnectionDaoTest extends ServiceTestFunctions {
+	static Logger										logger	= Logger.getLogger(MissingConnectionDaoTest.class);
+
+	private Model										model;
+	private Collection<Element>	nodes;
+
+	private Project	project;
+
+	@Before
+	public void setUp() throws Exception {
+		project = new Project();
+		projectDao.add(project);
+		dbUtils.setAutoFlush(false);
+		model =getModelForFile("testFiles/graph_path_example.xml",false);
+		project.addModel(model);
+		modelDao.add((Model) model);
+
+		nodes = model.getElements();
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		modelDao.delete((Model) model);
+		dbUtils.setAutoFlush(true);
+		projectDao.delete(project);
+	}
+
+	@Test
+	public void testGetMissingConnections() {
+		try {
+			Element node = nodes.iterator().next();
+
+			DataMining mc = new DataMining();
+			mc.setDescription("desc a");
+			mc.setElement(node);
+			mc.addReference(new MiriamData(MiriamType.PUBMED, "12345"));
+			mc.addReference(new MiriamData(MiriamType.PUBMED, "123456"));
+
+			missingConnectionDao.add(mc);
+
+			DataMining mc2 = new DataMining();
+			mc2.setDescription("desc ab");
+			mc2.setElement(node);
+			mc2.addReference(new MiriamData(MiriamType.PUBMED, "323456"));
+
+			missingConnectionDao.add(mc2);
+			missingConnectionDao.flush();
+			missingConnectionDao.evict(mc);
+			missingConnectionDao.evict(mc2);
+			
+			Collection<DataMining> collection = missingConnectionDao.getMissingConnectionForElement(node);
+
+			assertNotNull(collection);
+
+			DataMining mc3 = null;
+			DataMining mc4 = null;
+			
+			assertEquals(2,collection.size());
+
+			for (DataMining missingConnection : collection) {
+				if (mc3 == null)
+					mc3 = missingConnection;
+				else if (mc4 == null)
+					mc4 = missingConnection;
+				else
+					fail("Incorrect number of elemenets in collection");
+			}
+
+			assertTrue("invalid number of references: "+mc3.getReferences().size(),mc3.getReferences().size() == 2 || mc3.getReferences().size() == 1);
+			assertTrue("invalid number of references: "+mc4.getReferences().size(),mc4.getReferences().size() == 2 || mc4.getReferences().size() == 1);
+
+			missingConnectionDao.delete(mc3);
+			missingConnectionDao.delete(mc4);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail("Unknown exception occured");
+		}
+	}
+
+}
diff --git a/web/src/main/java/lcsb/mapviewer/bean/ChemicalBean.java b/web/src/main/java/lcsb/mapviewer/bean/ChemicalBean.java
index 68671a2166..4e59b89d1f 100644
--- a/web/src/main/java/lcsb/mapviewer/bean/ChemicalBean.java
+++ b/web/src/main/java/lcsb/mapviewer/bean/ChemicalBean.java
@@ -13,8 +13,8 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.services.interfaces.IUserService;
diff --git a/web/src/main/java/lcsb/mapviewer/bean/DrugBean.java b/web/src/main/java/lcsb/mapviewer/bean/DrugBean.java
index aedad5dce4..fc34f958f4 100644
--- a/web/src/main/java/lcsb/mapviewer/bean/DrugBean.java
+++ b/web/src/main/java/lcsb/mapviewer/bean/DrugBean.java
@@ -1,421 +1,421 @@
-package lcsb.mapviewer.bean;
-
-import java.awt.geom.Path2D;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.ManagedProperty;
-import javax.faces.bean.ViewScoped;
-import javax.faces.event.ActionEvent;
-
-import org.apache.log4j.Logger;
-
-import lcsb.mapviewer.commands.SubModelCommand;
-import lcsb.mapviewer.common.Pair;
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.Element;
-import lcsb.mapviewer.model.map.layout.alias.Alias;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.user.PrivilegeType;
-import lcsb.mapviewer.model.user.User;
-import lcsb.mapviewer.services.interfaces.IUserService;
-import lcsb.mapviewer.services.search.ElementIdentifierDetails;
-import lcsb.mapviewer.services.search.data.ElementIdentifier;
-import lcsb.mapviewer.services.search.data.ElementIdentifier.ElementIdentifierType;
-import lcsb.mapviewer.services.search.db.DbSearchCriteria;
-import lcsb.mapviewer.services.search.db.TargetDetails;
-import lcsb.mapviewer.services.search.db.drug.DrugView;
-import lcsb.mapviewer.services.search.db.drug.DrugViewFactory;
-import lcsb.mapviewer.services.search.db.drug.IDrugService;
-import lcsb.mapviewer.services.utils.gmap.CoordinationConverter;
-
-/**
- * Bean used for drug interface. It allows to look for the drugs that targets
- * some proteins or to find all possible information about a drug entered by
- * user.
- * 
- * @author Piotr Gawron
- * 
- */
-@ManagedBean(name = "drugMB")
-@ViewScoped
-public class DrugBean extends AbstractMarkerManagerBean<DrugView> implements Serializable {
-
-	/**
-	 * Name of the param passed in the request that contains name of drug to
-	 * search.
-	 */
-	private static final String					DRUG_NAME_PARAM								 = "tabView:drugForm:searchDrug";
-
-	/**
-	 * Name of the session field that store last query.
-	 */
-	private static final String					DRUG_LAST_SEARCH_SESSION_PARAM = "DRUG_SEARCH_PARAM";
-
-	/**
-	 * 
-	 */
-	private static final long						serialVersionUID							 = 1L;
-
-	/**
-	 * Default class logger.
-	 */
-	private static Logger								logger												 = Logger.getLogger(DrugBean.class);
-
-	/**
-	 * List of drugs suggested for vizualization (we cannot vizualize all of them,
-	 * because it's too much data).
-	 */
-	private List<DrugView>							suggestedDrugs								 = new ArrayList<DrugView>();
-
-	/**
-	 * Polygon selected on the map. It is used to find targets for drugs. This
-	 * polygon is in serialized javascript format.
-	 */
-	private String											polygon												 = "";
-
-	/**
-	 * Service used to query about drugs.
-	 * 
-	 * @see IDrugService
-	 */
-	@ManagedProperty(value = "#{DrugService}")
-	private transient IDrugService			drugService;
-
-	/**
-	 * Factory for drug elements.
-	 * 
-	 */
-	@ManagedProperty(value = "#{DrugViewFactory}")
-	private transient DrugViewFactory		drugViewFactory;
-
-	/**
-	 * Service used to access information about users.
-	 * 
-	 * @see IUserService
-	 */
-	@ManagedProperty(value = "#{UserService}")
-	private transient IUserService			userService;
-
-	/**
-	 * Bean used for communication with the client side about the data related to
-	 * users (including information about currently logged user).
-	 * 
-	 * @see UserBean
-	 */
-	@ManagedProperty(value = "#{userMB}")
-	private transient UserBean					userBean;
-
-	/**
-	 * Bean used for communication with the client side about the map currently
-	 * visualized.
-	 * 
-	 * @see MapBean
-	 */
-	@ManagedProperty(value = "#{mapMB}")
-	private transient MapBean					mapBean;
-
-	/**
-	 * This method populates list of suggested drugs. As the input we take a
-	 * polygon (which should contains some proteins to target)
-	 * 
-	 * @param actionEvent
-	 *          event from thefrom the client
-	 */
-	public void findDrugsForMapFragment(final ActionEvent actionEvent) {
-		Model model = getCurrentTopModel();
-		if (model == null) {
-			logger.warn("Unknown model. Skipping...");
-			return;
-		}
-		// transform serialized polygon into set of points
-		CoordinationConverter cc = new CoordinationConverter(model);
-		Path2D awtPolygon = cc.latLngToPolygon(polygon);
-
-		// create a part of the model that contains only the elements from the
-		// polygon
-		SubModelCommand subModelCommand = new SubModelCommand(model, awtPolygon);
-		Model partModel = subModelCommand.execute();
-		suggestedDrugs.addAll(drugService.getForTargets(partModel.getElements(), new DbSearchCriteria().organisms(mapBean.getOrganism())));
-	}
-
-	/**
-	 * Empty list of suggested drugs.
-	 * 
-	 * @param actionEvent
-	 *          event from thefrom the client
-	 */
-	public void clearDrugsForMapFragment(final ActionEvent actionEvent) {
-		suggestedDrugs = new ArrayList<DrugView>();
-	}
-
-	/**
-	 * This method look for the drugs.
-	 * 
-	 * @param actionEvent
-	 *          event from thefrom the client
-	 */
-	public void search(final ActionEvent actionEvent) {
-
-		String searchText = getRequestParameter(DRUG_NAME_PARAM);
-
-		findDrug(searchText);
-	}
-
-	/**
-	 * Look for a drug using query given in the parameter.
-	 * 
-	 * @param query
-	 *          search query
-	 */
-	protected void findDrug(String query) {
-		if (getCurrentTopModel() == null) {
-			logger.warn("Unknown model. Skipping...");
-			return;
-		}
-
-		// gather information for search engine
-		String ipAddress = getClientIpAddress();
-		Model model = getCurrentTopModel();
-
-		clearResults();
-
-		// drugs are comma separated
-		List<String> names = splitQuery(query, true);
-		int set = 0;
-		for (String string : names) {
-			DrugView drug = drugService.getByName(string, new DbSearchCriteria().ipAddress(ipAddress).model(model).organisms(mapBean.getOrganism()).colorSet(set++));
-			if (drug != null) {
-				addResult(drug);
-			}
-		}
-
-		// format results
-		if (getResults().size() == 0) { // if there are no results, add empty drug
-			logger.debug("No results found");
-			DrugView drug = drugService.createEmptyView();
-			drug.setName("Not found");
-			addResult(drug);
-		}
-
-		// send it to the client
-		refreshDataInJavascript();
-
-		addSessionParam(DRUG_LAST_SEARCH_SESSION_PARAM + getCurrentMapId(), query);
-	}
-
-	/**
-	 * Check privileges for advanced drug targeting view.
-	 * 
-	 * @return true if user has advanced privilege view for drugs
-	 */
-	public boolean getUserHasAdvancedView() {
-		Project project = getCurrentProject();
-		User user = userBean.getLoggedUser();
-		boolean result = userService.userHasPrivilege(user, PrivilegeType.DRUG_TARGETING_ADVANCED_VIEW_PROJECT, project);
-		return result;
-	}
-
-	@Override
-	public void clear() {
-		addSessionParam(DRUG_LAST_SEARCH_SESSION_PARAM + getCurrentMapId(), null);
-		setSuggestedDrugs(new ArrayList<DrugView>());
-		setPolygon("");
-		clearResults();
-		refreshDataInJavascript();
-	}
-
-	/**
-	 * @return the suggestedDrugs
-	 * @see #suggestedDrugs
-	 */
-	public List<DrugView> getSuggestedDrugs() {
-		return suggestedDrugs;
-	}
-
-	/**
-	 * @param suggestedDrugs
-	 *          the suggestedDrugs to set
-	 * @see #suggestedDrugs
-	 */
-	public void setSuggestedDrugs(List<DrugView> suggestedDrugs) {
-		this.suggestedDrugs = suggestedDrugs;
-	}
-
-	/**
-	 * @return the polygon
-	 * @see #polygon
-	 */
-	public String getPolygon() {
-		return polygon;
-	}
-
-	/**
-	 * @param polygon
-	 *          the polygon to set
-	 * @see #polygon
-	 */
-	public void setPolygon(String polygon) {
-		this.polygon = polygon;
-	}
-
-	/**
-	 * @return the drugService
-	 * @see #drugService
-	 */
-	public IDrugService getDrugService() {
-		return drugService;
-	}
-
-	/**
-	 * @param drugService
-	 *          the drugService to set
-	 * @see #drugService
-	 */
-	public void setDrugService(IDrugService drugService) {
-		this.drugService = drugService;
-	}
-
-	/**
-	 * @return the userService
-	 * @see #userService
-	 */
-	public IUserService getUserService() {
-		return userService;
-	}
-
-	/**
-	 * @param userService
-	 *          the userService to set
-	 * @see #userService
-	 */
-	public void setUserService(IUserService userService) {
-		this.userService = userService;
-	}
-
-	/**
-	 * @return the userBean
-	 * @see #userBean
-	 */
-	public UserBean getUserBean() {
-		return userBean;
-	}
-
-	/**
-	 * @param userBean
-	 *          the userBean to set
-	 * @see #userBean
-	 */
-	public void setUserBean(UserBean userBean) {
-		this.userBean = userBean;
-	}
-
-	@Override
-	public void init() {
-		String searchVal = (String) getSessionParam(DRUG_LAST_SEARCH_SESSION_PARAM + getCurrentMapId());
-		if (searchVal != null && !searchVal.isEmpty()) {
-			findDrug(searchVal);
-		}
-
-	}
-
-	@Override
-	protected List<ElementIdentifier> getLightElementsForSearchResult(DrugView result) {
-		return drugViewFactory.searchResultToElementIdentifier(result, getCurrentTopModel());
-	}
-
-	@Override
-	protected ElementIdentifierDetails getElementInformationForResult(ElementIdentifier element, DrugView result) {
-		return drugViewFactory.getElementInformationForResult(result.getTargetRows(), element, getCurrentTopModel());
-	}
-
-	@Override
-	protected List<Pair<String, ElementIdentifierDetails>> getElementInformationForResult(ElementIdentifier element) {
-		if (element.getType().equals(ElementIdentifierType.ALIAS.getJsName())) {
-			List<Pair<String, ElementIdentifierDetails>> result = new ArrayList<>();
-			
-			Model model = getCurrentTopModel().getSubmodelById(element.getModelId());
-
-			Alias alias = model.getAliasByDbId(Integer.valueOf(element.getObjectId()));
-			Element e = alias.getElement();
-			List<Element> list = new ArrayList<>();
-			list.add(e);
-			List<DrugView> drugs = drugService.getForTargets(list, new DbSearchCriteria().model(getCurrentTopModel()).organisms(mapBean.getOrganism()));
-			for (DrugView drugView : drugs) {
-				TargetDetails td = drugViewFactory.getElementInformationForResult(drugView.getTargetRows(), element, getCurrentTopModel());
-				if (td != null) {
-					result.add(new Pair<String, ElementIdentifierDetails>(drugView.getName(), td));
-				}
-			}
-			return result;
-		} else {
-			throw new InvalidArgumentException("Drugs are not supported for element: " + element.getType());
-		}
-	}
-
-	/**
-	 * @return the drugViewFactory
-	 * @see #drugViewFactory
-	 */
-	public DrugViewFactory getDrugViewFactory() {
-		return drugViewFactory;
-	}
-
-	/**
-	 * @param drugViewFactory
-	 *          the drugViewFactory to set
-	 * @see #drugViewFactory
-	 */
-	public void setDrugViewFactory(DrugViewFactory drugViewFactory) {
-		this.drugViewFactory = drugViewFactory;
-	}
-
-	/**
-	 * Returns currently browsed map.
-	 * 
-	 * @return currently browsed map
-	 */
-	private Model getCurrentTopModel() {
-		return mapBean.getCurrentTopModel();
-	}
-
-	/**
-	 * Returns identifier of browsed map (if such map wasn't setup it will be
-	 * default identifier).
-	 * 
-	 * @return identifier of browsed map
-	 */
-	private String getCurrentMapId() {
-		return mapBean.getCurrentMapId();
-	}
-
-	/**
-	 * Returns curently browsed project.
-	 * 
-	 * @return curently browsed project
-	 */
-	private Project getCurrentProject() {
-		return getCurrentTopModel().getProject();
-	}
-
-	/**
-	 * @return the mapBean
-	 * @see #mapBean
-	 */
-	public MapBean getMapBean() {
-		return mapBean;
-	}
-
-	/**
-	 * @param mapBean
-	 *          the mapBean to set
-	 * @see #mapBean
-	 */
-	public void setMapBean(MapBean mapBean) {
-		this.mapBean = mapBean;
-	}
-
-}
+package lcsb.mapviewer.bean;
+
+import java.awt.geom.Path2D;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.ViewScoped;
+import javax.faces.event.ActionEvent;
+
+import org.apache.log4j.Logger;
+
+import lcsb.mapviewer.commands.SubModelCommand;
+import lcsb.mapviewer.common.Pair;
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.model.Project;
+import lcsb.mapviewer.model.map.layout.alias.Alias;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.model.user.PrivilegeType;
+import lcsb.mapviewer.model.user.User;
+import lcsb.mapviewer.services.interfaces.IUserService;
+import lcsb.mapviewer.services.search.ElementIdentifierDetails;
+import lcsb.mapviewer.services.search.data.ElementIdentifier;
+import lcsb.mapviewer.services.search.data.ElementIdentifier.ElementIdentifierType;
+import lcsb.mapviewer.services.search.db.DbSearchCriteria;
+import lcsb.mapviewer.services.search.db.TargetDetails;
+import lcsb.mapviewer.services.search.db.drug.DrugView;
+import lcsb.mapviewer.services.search.db.drug.DrugViewFactory;
+import lcsb.mapviewer.services.search.db.drug.IDrugService;
+import lcsb.mapviewer.services.utils.gmap.CoordinationConverter;
+
+/**
+ * Bean used for drug interface. It allows to look for the drugs that targets
+ * some proteins or to find all possible information about a drug entered by
+ * user.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@ManagedBean(name = "drugMB")
+@ViewScoped
+public class DrugBean extends AbstractMarkerManagerBean<DrugView> implements Serializable {
+
+	/**
+	 * Name of the param passed in the request that contains name of drug to
+	 * search.
+	 */
+	private static final String					DRUG_NAME_PARAM								 = "tabView:drugForm:searchDrug";
+
+	/**
+	 * Name of the session field that store last query.
+	 */
+	private static final String					DRUG_LAST_SEARCH_SESSION_PARAM = "DRUG_SEARCH_PARAM";
+
+	/**
+	 * 
+	 */
+	private static final long						serialVersionUID							 = 1L;
+
+	/**
+	 * Default class logger.
+	 */
+	private static Logger								logger												 = Logger.getLogger(DrugBean.class);
+
+	/**
+	 * List of drugs suggested for vizualization (we cannot vizualize all of them,
+	 * because it's too much data).
+	 */
+	private List<DrugView>							suggestedDrugs								 = new ArrayList<DrugView>();
+
+	/**
+	 * Polygon selected on the map. It is used to find targets for drugs. This
+	 * polygon is in serialized javascript format.
+	 */
+	private String											polygon												 = "";
+
+	/**
+	 * Service used to query about drugs.
+	 * 
+	 * @see IDrugService
+	 */
+	@ManagedProperty(value = "#{DrugService}")
+	private transient IDrugService			drugService;
+
+	/**
+	 * Factory for drug elements.
+	 * 
+	 */
+	@ManagedProperty(value = "#{DrugViewFactory}")
+	private transient DrugViewFactory		drugViewFactory;
+
+	/**
+	 * Service used to access information about users.
+	 * 
+	 * @see IUserService
+	 */
+	@ManagedProperty(value = "#{UserService}")
+	private transient IUserService			userService;
+
+	/**
+	 * Bean used for communication with the client side about the data related to
+	 * users (including information about currently logged user).
+	 * 
+	 * @see UserBean
+	 */
+	@ManagedProperty(value = "#{userMB}")
+	private transient UserBean					userBean;
+
+	/**
+	 * Bean used for communication with the client side about the map currently
+	 * visualized.
+	 * 
+	 * @see MapBean
+	 */
+	@ManagedProperty(value = "#{mapMB}")
+	private transient MapBean					mapBean;
+
+	/**
+	 * This method populates list of suggested drugs. As the input we take a
+	 * polygon (which should contains some proteins to target)
+	 * 
+	 * @param actionEvent
+	 *          event from thefrom the client
+	 */
+	public void findDrugsForMapFragment(final ActionEvent actionEvent) {
+		Model model = getCurrentTopModel();
+		if (model == null) {
+			logger.warn("Unknown model. Skipping...");
+			return;
+		}
+		// transform serialized polygon into set of points
+		CoordinationConverter cc = new CoordinationConverter(model);
+		Path2D awtPolygon = cc.latLngToPolygon(polygon);
+
+		// create a part of the model that contains only the elements from the
+		// polygon
+		SubModelCommand subModelCommand = new SubModelCommand(model, awtPolygon);
+		Model partModel = subModelCommand.execute();
+		suggestedDrugs.addAll(drugService.getForTargets(partModel.getElements(), new DbSearchCriteria().organisms(mapBean.getOrganism())));
+	}
+
+	/**
+	 * Empty list of suggested drugs.
+	 * 
+	 * @param actionEvent
+	 *          event from thefrom the client
+	 */
+	public void clearDrugsForMapFragment(final ActionEvent actionEvent) {
+		suggestedDrugs = new ArrayList<DrugView>();
+	}
+
+	/**
+	 * This method look for the drugs.
+	 * 
+	 * @param actionEvent
+	 *          event from thefrom the client
+	 */
+	public void search(final ActionEvent actionEvent) {
+
+		String searchText = getRequestParameter(DRUG_NAME_PARAM);
+
+		findDrug(searchText);
+	}
+
+	/**
+	 * Look for a drug using query given in the parameter.
+	 * 
+	 * @param query
+	 *          search query
+	 */
+	protected void findDrug(String query) {
+		if (getCurrentTopModel() == null) {
+			logger.warn("Unknown model. Skipping...");
+			return;
+		}
+
+		// gather information for search engine
+		String ipAddress = getClientIpAddress();
+		Model model = getCurrentTopModel();
+
+		clearResults();
+
+		// drugs are comma separated
+		List<String> names = splitQuery(query, true);
+		int set = 0;
+		for (String string : names) {
+			DrugView drug = drugService.getByName(string, new DbSearchCriteria().ipAddress(ipAddress).model(model).organisms(mapBean.getOrganism()).colorSet(set++));
+			if (drug != null) {
+				addResult(drug);
+			}
+		}
+
+		// format results
+		if (getResults().size() == 0) { // if there are no results, add empty drug
+			logger.debug("No results found");
+			DrugView drug = drugService.createEmptyView();
+			drug.setName("Not found");
+			addResult(drug);
+		}
+
+		// send it to the client
+		refreshDataInJavascript();
+
+		addSessionParam(DRUG_LAST_SEARCH_SESSION_PARAM + getCurrentMapId(), query);
+	}
+
+	/**
+	 * Check privileges for advanced drug targeting view.
+	 * 
+	 * @return true if user has advanced privilege view for drugs
+	 */
+	public boolean getUserHasAdvancedView() {
+		Project project = getCurrentProject();
+		User user = userBean.getLoggedUser();
+		boolean result = userService.userHasPrivilege(user, PrivilegeType.DRUG_TARGETING_ADVANCED_VIEW_PROJECT, project);
+		return result;
+	}
+
+	@Override
+	public void clear() {
+		addSessionParam(DRUG_LAST_SEARCH_SESSION_PARAM + getCurrentMapId(), null);
+		setSuggestedDrugs(new ArrayList<DrugView>());
+		setPolygon("");
+		clearResults();
+		refreshDataInJavascript();
+	}
+
+	/**
+	 * @return the suggestedDrugs
+	 * @see #suggestedDrugs
+	 */
+	public List<DrugView> getSuggestedDrugs() {
+		return suggestedDrugs;
+	}
+
+	/**
+	 * @param suggestedDrugs
+	 *          the suggestedDrugs to set
+	 * @see #suggestedDrugs
+	 */
+	public void setSuggestedDrugs(List<DrugView> suggestedDrugs) {
+		this.suggestedDrugs = suggestedDrugs;
+	}
+
+	/**
+	 * @return the polygon
+	 * @see #polygon
+	 */
+	public String getPolygon() {
+		return polygon;
+	}
+
+	/**
+	 * @param polygon
+	 *          the polygon to set
+	 * @see #polygon
+	 */
+	public void setPolygon(String polygon) {
+		this.polygon = polygon;
+	}
+
+	/**
+	 * @return the drugService
+	 * @see #drugService
+	 */
+	public IDrugService getDrugService() {
+		return drugService;
+	}
+
+	/**
+	 * @param drugService
+	 *          the drugService to set
+	 * @see #drugService
+	 */
+	public void setDrugService(IDrugService drugService) {
+		this.drugService = drugService;
+	}
+
+	/**
+	 * @return the userService
+	 * @see #userService
+	 */
+	public IUserService getUserService() {
+		return userService;
+	}
+
+	/**
+	 * @param userService
+	 *          the userService to set
+	 * @see #userService
+	 */
+	public void setUserService(IUserService userService) {
+		this.userService = userService;
+	}
+
+	/**
+	 * @return the userBean
+	 * @see #userBean
+	 */
+	public UserBean getUserBean() {
+		return userBean;
+	}
+
+	/**
+	 * @param userBean
+	 *          the userBean to set
+	 * @see #userBean
+	 */
+	public void setUserBean(UserBean userBean) {
+		this.userBean = userBean;
+	}
+
+	@Override
+	public void init() {
+		String searchVal = (String) getSessionParam(DRUG_LAST_SEARCH_SESSION_PARAM + getCurrentMapId());
+		if (searchVal != null && !searchVal.isEmpty()) {
+			findDrug(searchVal);
+		}
+
+	}
+
+	@Override
+	protected List<ElementIdentifier> getLightElementsForSearchResult(DrugView result) {
+		return drugViewFactory.searchResultToElementIdentifier(result, getCurrentTopModel());
+	}
+
+	@Override
+	protected ElementIdentifierDetails getElementInformationForResult(ElementIdentifier element, DrugView result) {
+		return drugViewFactory.getElementInformationForResult(result.getTargetRows(), element, getCurrentTopModel());
+	}
+
+	@Override
+	protected List<Pair<String, ElementIdentifierDetails>> getElementInformationForResult(ElementIdentifier element) {
+		if (element.getType().equals(ElementIdentifierType.ALIAS.getJsName())) {
+			List<Pair<String, ElementIdentifierDetails>> result = new ArrayList<>();
+			
+			Model model = getCurrentTopModel().getSubmodelById(element.getModelId());
+
+			Alias alias = model.getAliasByDbId(Integer.valueOf(element.getObjectId()));
+			Element e = alias.getElement();
+			List<Element> list = new ArrayList<>();
+			list.add(e);
+			List<DrugView> drugs = drugService.getForTargets(list, new DbSearchCriteria().model(getCurrentTopModel()).organisms(mapBean.getOrganism()));
+			for (DrugView drugView : drugs) {
+				TargetDetails td = drugViewFactory.getElementInformationForResult(drugView.getTargetRows(), element, getCurrentTopModel());
+				if (td != null) {
+					result.add(new Pair<String, ElementIdentifierDetails>(drugView.getName(), td));
+				}
+			}
+			return result;
+		} else {
+			throw new InvalidArgumentException("Drugs are not supported for element: " + element.getType());
+		}
+	}
+
+	/**
+	 * @return the drugViewFactory
+	 * @see #drugViewFactory
+	 */
+	public DrugViewFactory getDrugViewFactory() {
+		return drugViewFactory;
+	}
+
+	/**
+	 * @param drugViewFactory
+	 *          the drugViewFactory to set
+	 * @see #drugViewFactory
+	 */
+	public void setDrugViewFactory(DrugViewFactory drugViewFactory) {
+		this.drugViewFactory = drugViewFactory;
+	}
+
+	/**
+	 * Returns currently browsed map.
+	 * 
+	 * @return currently browsed map
+	 */
+	private Model getCurrentTopModel() {
+		return mapBean.getCurrentTopModel();
+	}
+
+	/**
+	 * Returns identifier of browsed map (if such map wasn't setup it will be
+	 * default identifier).
+	 * 
+	 * @return identifier of browsed map
+	 */
+	private String getCurrentMapId() {
+		return mapBean.getCurrentMapId();
+	}
+
+	/**
+	 * Returns curently browsed project.
+	 * 
+	 * @return curently browsed project
+	 */
+	private Project getCurrentProject() {
+		return getCurrentTopModel().getProject();
+	}
+
+	/**
+	 * @return the mapBean
+	 * @see #mapBean
+	 */
+	public MapBean getMapBean() {
+		return mapBean;
+	}
+
+	/**
+	 * @param mapBean
+	 *          the mapBean to set
+	 * @see #mapBean
+	 */
+	public void setMapBean(MapBean mapBean) {
+		this.mapBean = mapBean;
+	}
+
+}
diff --git a/web/src/main/java/lcsb/mapviewer/bean/ExportBean.java b/web/src/main/java/lcsb/mapviewer/bean/ExportBean.java
index 9b185b6fee..66c334eaed 100644
--- a/web/src/main/java/lcsb/mapviewer/bean/ExportBean.java
+++ b/web/src/main/java/lcsb/mapviewer/bean/ExportBean.java
@@ -49,8 +49,19 @@ import lcsb.mapviewer.converter.graphics.AbstractImageGenerator.Params;
 import lcsb.mapviewer.converter.graphics.ImageGenerators;
 import lcsb.mapviewer.converter.graphics.SvgImageGenerator;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.structure.AntisenseRna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Degraded;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Gene;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Ion;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Phenotype;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Protein;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Rna;
+import lcsb.mapviewer.converter.model.celldesigner.structure.SimpleMolecule;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Species;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Unknown;
 import lcsb.mapviewer.converter.model.sbgnml.SbgnmlXmlConverter;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
@@ -61,17 +72,6 @@ import lcsb.mapviewer.model.map.layout.alias.CompartmentAlias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
 import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.AntisenseRna;
-import lcsb.mapviewer.model.map.species.ComplexSpecies;
-import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Gene;
-import lcsb.mapviewer.model.map.species.Ion;
-import lcsb.mapviewer.model.map.species.Phenotype;
-import lcsb.mapviewer.model.map.species.Protein;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.model.map.species.SimpleMolecule;
-import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.Unknown;
 import lcsb.mapviewer.services.interfaces.IExporterService;
 import lcsb.mapviewer.services.interfaces.IExporterService.ExporterParameters;
 import lcsb.mapviewer.services.interfaces.ILayoutService;
diff --git a/web/src/main/java/lcsb/mapviewer/bean/FeedbackBean.java b/web/src/main/java/lcsb/mapviewer/bean/FeedbackBean.java
index 7b94062520..83277c00b0 100644
--- a/web/src/main/java/lcsb/mapviewer/bean/FeedbackBean.java
+++ b/web/src/main/java/lcsb/mapviewer/bean/FeedbackBean.java
@@ -19,8 +19,8 @@ import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.reaction.Modifier;
diff --git a/web/src/main/java/lcsb/mapviewer/bean/MiRNABean.java b/web/src/main/java/lcsb/mapviewer/bean/MiRNABean.java
index e3e693baad..1691d560f8 100644
--- a/web/src/main/java/lcsb/mapviewer/bean/MiRNABean.java
+++ b/web/src/main/java/lcsb/mapviewer/bean/MiRNABean.java
@@ -13,7 +13,7 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.map.Element;
+import lcsb.mapviewer.converter.model.celldesigner.structure.Element;
 import lcsb.mapviewer.model.map.layout.alias.Alias;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.services.search.ElementIdentifierDetails;
-- 
GitLab