FIX: not using direct resturn so allocation could be freed in special cases.