getting close
before refactor