add states
refactor