Updated with some design changes