Added ValueObjectSupport to try and keep DRY