update to return Result