Refactored Button and derived classes, moving state change and transition logic to...