add valueobject support