add marshalling support