simplified api
cleanup
updated to further simplify api and allow for the user to set the button to specific states
cleanup sample cases
document delegate methods
updated docs