Added a Builder + A Factory Patern to Marshall and unMarshall