modify
add ResultType
add throwing mode
fix