tighten up; refactor