reduce reuse refactor