menu model and implentation