Finish implementation of state changement pattern