added return_type argument