convertible refactor