made chainer to better allow extensibility for marshaller plugins and type inference