refactored and simplified GUI mixins