diff --git a/src/Speckle.Objects/Data/ArcgisObject.cs b/src/Speckle.Objects/Data/ArcgisObject.cs
index abe87aea..701a7871 100644
--- a/src/Speckle.Objects/Data/ArcgisObject.cs
+++ b/src/Speckle.Objects/Data/ArcgisObject.cs
@@ -6,16 +6,10 @@ namespace Speckle.Objects.Data;
/// Represents a ArcGIS.Core.CoreObjectsBase object in ArcGIS
///
[SpeckleType("Objects.Data.ArcgisObject")]
-public class ArcgisObject : Base, IGisObject
+public class ArcgisObject : DataObject, IGisObject
{
- public required string name { get; set; }
public required string type { get; set; }
- [DetachProperty]
- public required List displayValue { get; set; }
-
- public required Dictionary properties { get; set; }
-
public required string units { get; set; }
IReadOnlyList IDisplayValue>.displayValue => displayValue;
diff --git a/src/Speckle.Objects/Data/Civil3dObject.cs b/src/Speckle.Objects/Data/Civil3dObject.cs
index cad3e2fe..995a3c1c 100644
--- a/src/Speckle.Objects/Data/Civil3dObject.cs
+++ b/src/Speckle.Objects/Data/Civil3dObject.cs
@@ -6,9 +6,8 @@ namespace Speckle.Objects.Data;
/// Represents an Autodesk.Civil.DatabaseServices.Entity object in Civil3d
///
[SpeckleType("Objects.Data.Civil3dObject")]
-public class Civil3dObject : Base, ICivilObject
+public class Civil3dObject : DataObject, ICivilObject
{
- public required string name { get; set; }
public required string type { get; set; }
///
@@ -22,14 +21,7 @@ public class Civil3dObject : Base, ICivilObject
[DetachProperty]
public required List elements { get; set; }
- [DetachProperty]
- public required List displayValue { get; set; }
-
- public required Dictionary properties { get; set; }
-
public required string units { get; set; }
IReadOnlyList ICivilObject.elements => elements;
-
- IReadOnlyList IDisplayValue>.displayValue => displayValue;
}
diff --git a/src/Speckle.Objects/Data/EtabsObject.cs b/src/Speckle.Objects/Data/EtabsObject.cs
index fa11940f..3f0aeafe 100644
--- a/src/Speckle.Objects/Data/EtabsObject.cs
+++ b/src/Speckle.Objects/Data/EtabsObject.cs
@@ -6,9 +6,8 @@ namespace Speckle.Objects.Data;
/// Represents a wrapper object in ETABS
///
[SpeckleType("Objects.Data.EtabsObject")]
-public class EtabsObject : Base, ICsiObject
+public class EtabsObject : DataObject, ICsiObject
{
- public required string name { get; set; }
public required string type { get; set; }
///
@@ -17,11 +16,6 @@ public class EtabsObject : Base, ICsiObject
[DetachProperty]
public required List elements { get; set; }
- [DetachProperty]
- public required List displayValue { get; set; }
-
- public required Dictionary properties { get; set; }
-
public required string units { get; set; }
IReadOnlyList ICsiObject.elements => elements;
diff --git a/src/Speckle.Objects/Data/NavisworksObject.cs b/src/Speckle.Objects/Data/NavisworksObject.cs
index 571cc286..1b321000 100644
--- a/src/Speckle.Objects/Data/NavisworksObject.cs
+++ b/src/Speckle.Objects/Data/NavisworksObject.cs
@@ -6,15 +6,8 @@ namespace Speckle.Objects.Data;
/// Represents a "first selectable ancestor" Navisworks.ModelItem object in Navisworks
///
[SpeckleType("Objects.Data.NavisworksObject")]
-public class NavisworksObject : Base, INavisworksObject
+public class NavisworksObject : DataObject, INavisworksObject
{
- public required string name { get; set; }
-
- [DetachProperty]
- public required List displayValue { get; set; }
-
- public required Dictionary properties { get; set; }
-
public required string units { get; set; }
IReadOnlyList IDisplayValue>.displayValue => displayValue;
diff --git a/src/Speckle.Objects/Data/RevitObject.cs b/src/Speckle.Objects/Data/RevitObject.cs
index 20238bee..bdbd51cc 100644
--- a/src/Speckle.Objects/Data/RevitObject.cs
+++ b/src/Speckle.Objects/Data/RevitObject.cs
@@ -1,4 +1,3 @@
-using Speckle.Objects.Geometry;
using Speckle.Sdk.Models;
namespace Speckle.Objects.Data;
@@ -7,9 +6,8 @@ namespace Speckle.Objects.Data;
/// Represents an Autodesk.Revit.DB.Element object in Revit
///
[SpeckleType("Objects.Data.RevitObject")]
-public class RevitObject : Base, IRevitObject
+public class RevitObject : DataObject, IRevitObject
{
- public required string name { get; set; }
public required string type { get; set; }
public required string family { get; set; }
public required string category { get; set; }
@@ -25,14 +23,7 @@ public class RevitObject : Base, IRevitObject
[DetachProperty]
public required List elements { get; set; }
- [DetachProperty]
- public required List displayValue { get; set; }
-
- public required Dictionary properties { get; set; }
-
public required string units { get; set; }
IReadOnlyList IRevitObject.elements => elements;
-
- IReadOnlyList IDisplayValue>.displayValue => displayValue;
}
diff --git a/src/Speckle.Objects/Data/TeklaObject.cs b/src/Speckle.Objects/Data/TeklaObject.cs
index 737dbb55..c8de0a27 100644
--- a/src/Speckle.Objects/Data/TeklaObject.cs
+++ b/src/Speckle.Objects/Data/TeklaObject.cs
@@ -6,9 +6,8 @@ namespace Speckle.Objects.Data;
/// Represents an Tekla.Structures.Model.ModelObject object in Tekla Structures
///
[SpeckleType("Objects.Data.TeklaObject")]
-public class TeklaObject : Base, ITeklaObject
+public class TeklaObject : DataObject, ITeklaObject
{
- public required string name { get; set; }
public required string type { get; set; }
///
@@ -17,11 +16,6 @@ public class TeklaObject : Base, ITeklaObject
[DetachProperty]
public required List elements { get; set; }
- [DetachProperty]
- public required List displayValue { get; set; }
-
- public required Dictionary properties { get; set; }
-
public required string units { get; set; }
IReadOnlyList ITeklaObject.elements => elements;
diff --git a/src/Speckle.Objects/Interfaces.cs b/src/Speckle.Objects/Interfaces.cs
index 2e9ac929..93237bc9 100644
--- a/src/Speckle.Objects/Interfaces.cs
+++ b/src/Speckle.Objects/Interfaces.cs
@@ -126,7 +126,7 @@ public interface IProperties : ISpeckleObject
Dictionary properties { get; }
}
-public interface IDataObject : ISpeckleObject, IProperties, IDisplayValue>
+public interface IDataObject : IProperties, IDisplayValue>
{
///
/// The name of the object, primarily used to decorate the object for consumption in frontend and other apps