move to core
add TargetMethodException
refactor
split PropertySetter to Field & Method Setters
split PropertyGetter to Field & Method Getters