updated with initial design for HW4