refactored such that there exist a qml button that other buttons can inherit from