Following the refactor in #24 review the current design and create issues for possible improvements (PS- UML available [here](http://www.plantuml.com/plantuml/png/POx1IiD048RlynJ3dceX1-dLGoLjK2WeYIymT4SOkZihcuae-F3IR4b3SWdyt__bdzttHjc66A0TzAZVafD6LaDy-gigx7QTaV6LjAmKEUDIT9iwnKZgJwAyj1zSsN6HH76JHugMi3wzhbrORbTLmW_gBm3NxnXR9i_vdXi9_4BgmnmUoBX9EP8Pv-ddBHv_BDFPqarrZsx4Rklm-MoI5A3ibrU_-yyI0MPdIdUG_ZA3Qw7RpMkOJfUsfYyn2c_AKx5K6l4Sn7xlmfxL3p7y0m00))