Can use different types to represent States
Added a Done Method and a States property