Refactor reciprocal types for extension