replaced a bit more custom reflection with PropertyUtils