Refactor Menu and add tests for Menu