some button refactoring (now you can have buttons with labels of different types)