enable more complex return types