updated button component