consider moving  dhcp properties  out of properties  i am a little wary of adding dynamic allocation to a struct s ctor  since i tend of think of structs as  dumb  and  with dhcpproperties itself being a composition of multiple fields  i feel like the two levels of nesting is more confusing than helpful structs vs  classes