added more to problem, small design changes