Implement some complex support using type lowering constructs