start with, defineStates implimented