updated: rewrite return value