refine reflect on setting value.
add test