modified internal code structure and 
immutator based on interface was created
new test to ensure that no unnecessary classes are generated and the
readme now documents the usage in details.