added states and rest of the interface methods