introducing the MenuButton
clean up
rewrite the Handler and make it compatible with C++03