added constructors and cleaned up docs