please comment your methods! what is the input, what is the output, what is the state change?