return both value and error
return both value and error