added support for buttons
unit tests for buttons