allow initialization with arbitrary definitions (expanding from #36 )
allow initialization with arbitrary definitions (expanding from #36 )