Buttons refactoring
WIP #7, #8
WIP #7, Fixes #10
WIP #7, Closes #11
WIP #7, Closes #11
WIP #7
WIP #7
WIP #7
WIP #7
WIP #7
WIP #7, Closes #8
Closes #7