several changes
reworked problem
reworked design