explanation of design choices