Added requirements, some design changes