improve to return