refactored charmenu