rename validateState to getValidState

Also ensure that returned objects are immutable