refactoring: using local types where available