basic button functionality
full button functionality