nicer button implementation