Allow user supplied constructors.
Initial commit