added design principles