added several design changes