design, following

some design changes
following first implementation