added constructors and support for additional fields