The design was defective and I didn't expect the popularity of the project. After these changes the code will be more mantainable and understandable.
Among the changes we can see:
- A better code structure
- Decoupled button widget from its logic
- More code reuse
- Easier way to add buttons
- Specialized classes