ok, i lied, heres more refactoring