Use better way to override the logic of ReadState