fix generic return type