Cleaned up some of the constructors with reflective updating of properties