Starting menu api

Committing my progress on the menu api before I go to bed. Will finish as soon as I get a chance.