Fix: use character codes for menu items (and refactor menu quite a bit)