button states + ref