split into multiple views and controllers, implemented select