public override StateCommand HangleInput(Demo demo)
 {
     throw new System.NotImplementedException();
 }
 // this will return the next command, if it's null, the state remains unchanged
 public abstract StateCommand HangleInput(Demo demo);