add state transtion methods