change code to object style
add diver
add buttons(should not to be in this branch)