hopefully menu is now abstract enough to be reusable