cleaned up menu implementation