How can I improve this design?