diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/Attribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/Attribute.java
index 5ea9d26..2ef85cb 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/Attribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/Attribute.java
@@ -26,6 +26,7 @@
 import org.eclipse.osee.framework.core.model.type.AttributeType;
 import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
 import org.eclipse.osee.framework.jdk.core.type.OseeStateException;
+import org.eclipse.osee.framework.jdk.core.util.Conditions;
 import org.eclipse.osee.framework.jdk.core.util.Lib;
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.framework.messaging.event.res.AttributeEventModificationType;
@@ -113,6 +114,7 @@
    }
 
    public boolean setValue(T value) {
+      Conditions.checkNotNull(value, "Attribute value", "attribute id [%s]", getId());
       checkIsRenameable(value);
       boolean response = subClassSetValue(value);
       if (response) {
@@ -122,10 +124,12 @@
    }
 
    protected boolean setFromStringNoDirty(String value) {
+      Conditions.checkNotNull(value, "Attribute value", "attribute id [%s]", getId());
       return subClassSetValue(convertStringToValue(value));
    }
 
    public boolean setFromString(String value) throws OseeCoreException {
+      Conditions.checkNotNull(value, "Attribute value", "attribute id [%s]", getId());
       return setValue(convertStringToValue(value));
    }
 
@@ -141,6 +145,9 @@
       }
    }
 
+   /**
+    * @param value will be non-null
+    */
    public abstract T convertStringToValue(String value);
 
    public final void resetToDefaultValue() throws OseeCoreException {
@@ -168,7 +175,7 @@
 
    /**
     * Subclasses must provide an implementation of this method and in general should not override the other set value
-    * methods
+    * methods. The value parameter will be non-null
     */
    protected abstract boolean subClassSetValue(T value) throws OseeCoreException;
 
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/ArtifactReferenceAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/ArtifactReferenceAttribute.java
index 5f0fac2..f66abb1 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/ArtifactReferenceAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/ArtifactReferenceAttribute.java
@@ -10,23 +10,10 @@
  *******************************************************************************/
 package org.eclipse.osee.framework.skynet.core.attribute;
 
-import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
 import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
 
 /**
  * @author Roberto E. Escobar
  */
 public class ArtifactReferenceAttribute extends IdentityReferenceAttribute<Artifact> {
-
-   Long rawValue;
-
-   @Override
-   protected boolean subClassSetValue(Artifact artifact) throws OseeCoreException {
-      rawValue = artifact == null ? null : artifact.getUuid();
-      return getAttributeDataProvider().setValue(artifact == null ? "" : artifact.getIdString());
-   }
-
-   public Long getRawValue() {
-      return rawValue;
-   }
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/BooleanAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/BooleanAttribute.java
index a463d93..7263f5b 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/BooleanAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/BooleanAttribute.java
@@ -24,13 +24,7 @@
    }
 
    @Override
-   public boolean subClassSetValue(Boolean value) throws OseeCoreException {
-      return getAttributeDataProvider().setValue(value);
-   }
-
-   @Override
    public Boolean convertStringToValue(String value) {
       return Boolean.valueOf(value);
    }
-
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/BranchReferenceAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/BranchReferenceAttribute.java
index 5f4a558..41e64d9 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/BranchReferenceAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/BranchReferenceAttribute.java
@@ -11,13 +11,6 @@
 package org.eclipse.osee.framework.skynet.core.attribute;
 
 import org.eclipse.osee.framework.core.data.IOseeBranch;
-import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
 
 public class BranchReferenceAttribute extends IdentityReferenceAttribute<IOseeBranch> {
-
-   @Override
-   protected boolean subClassSetValue(IOseeBranch value) throws OseeCoreException {
-      return getAttributeDataProvider().setValue(value == null ? "" : value.getIdString());
-   }
-
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/CharacterBackedAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/CharacterBackedAttribute.java
index cb15abb..4f067f4 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/CharacterBackedAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/CharacterBackedAttribute.java
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.eclipse.osee.framework.skynet.core.attribute;
 
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
 import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
 import org.eclipse.osee.framework.skynet.core.attribute.providers.ICharacterAttributeDataProvider;
 
@@ -23,4 +25,21 @@
       // the super class is of type  ICharacterAttributeDataProvider
       return (ICharacterAttributeDataProvider) super.getAttributeDataProvider();
    }
+
+   @Override
+   protected boolean subClassSetValue(T value) {
+      Class<?> clazz = getClass();
+      String superclassName = clazz.getSuperclass().getSimpleName();
+      while (!superclassName.equals("CharacterBackedAttribute") && !superclassName.equals("BinaryBackedAttribute")) {
+         clazz = clazz.getSuperclass();
+         superclassName = clazz.getSuperclass().getSimpleName();
+      }
+      Type persistentClass = ((ParameterizedType) clazz.getGenericSuperclass()).getActualTypeArguments()[0];
+      if (!persistentClass.getTypeName().equals(value.getClass().getName())) {
+         throw new ClassCastException(
+            persistentClass + " attribute subClassSetValue called with type " + value.getClass());
+      }
+
+      return getAttributeDataProvider().setValue(value);
+   }
 }
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/CompressedContentAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/CompressedContentAttribute.java
index 72add22..c3d207c 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/CompressedContentAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/CompressedContentAttribute.java
@@ -24,7 +24,7 @@
    }
 
    @Override
-   public boolean subClassSetValue(InputStream value) throws OseeCoreException {
+   protected boolean subClassSetValue(InputStream value) {
       return setValueFromInputStream(value);
    }
 
@@ -32,12 +32,8 @@
    public boolean setValueFromInputStream(InputStream value) throws OseeCoreException {
       boolean response = false;
       try {
-         if (value == null) {
-            response = getAttributeDataProvider().setValue(null);
-         } else {
-            byte[] data = Lib.inputStreamToBytes(value);
-            response = getAttributeDataProvider().setValue(ByteBuffer.wrap(data));
-         }
+         byte[] data = Lib.inputStreamToBytes(value);
+         response = getAttributeDataProvider().setValue(ByteBuffer.wrap(data));
       } catch (IOException ex) {
          OseeCoreException.wrapAndThrow(ex);
       }
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/DateAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/DateAttribute.java
index c15feda..d96f14c 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/DateAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/DateAttribute.java
@@ -13,10 +13,7 @@
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.logging.Level;
 import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.logging.OseeLog;
 
 /**
  * @author Robert A. Fisher
@@ -38,21 +35,15 @@
    @Override
    protected void setToDefaultValue() throws OseeCoreException {
       String defaultValue = getAttributeType().getDefaultValue();
-      if (Strings.isValid(defaultValue)) {
-         setFromStringNoDirty(defaultValue);
-      } else {
+      if (defaultValue == null) {
          subClassSetValue(new Date());
+      } else {
+         setFromStringNoDirty(defaultValue);
       }
    }
 
    @Override
-   public boolean subClassSetValue(Date value) throws OseeCoreException {
-      if (value == null) {
-         OseeLog.log(this.getClass(), Level.SEVERE,
-            String.format("AttributeType [%s] GammId [%s] - DateAttribute.subClassSetValue had a null value",
-               getAttributeType(), getGammaId()));
-         return false;
-      }
+   protected boolean subClassSetValue(Date value) {
       return getAttributeDataProvider().setValue(value.getTime());
    }
 
@@ -63,9 +54,6 @@
 
    @Override
    public Date convertStringToValue(String value) {
-      if (!Strings.isValid(value)) {
-         return null;
-      }
       return new Date(Long.parseLong(value));
    }
 
@@ -78,5 +66,4 @@
    public String getAsFormattedString(DateFormat dateFormat) throws OseeCoreException {
       return dateFormat.format(getValue());
    }
-
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/EnumeratedAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/EnumeratedAttribute.java
index 8f63c81..abc9101 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/EnumeratedAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/EnumeratedAttribute.java
@@ -23,9 +23,4 @@
       String toDisplay = getAttributeDataProvider().getDisplayableString();
       return Strings.isValid(toDisplay) ? toDisplay : "<Select>";
    }
-
-   @Override
-   public boolean subClassSetValue(String value) throws OseeCoreException {
-      return super.subClassSetValue(value);
-   }
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/FloatingPointAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/FloatingPointAttribute.java
index 286d74a..bcbeab3 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/FloatingPointAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/FloatingPointAttribute.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.osee.framework.skynet.core.attribute;
 
-import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
 import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
 import org.eclipse.osee.framework.jdk.core.util.Strings;
 
@@ -27,14 +26,6 @@
    }
 
    @Override
-   public boolean subClassSetValue(Double value) throws OseeCoreException {
-      if (value == null) {
-         throw new OseeArgumentException("Attribute value was null");
-      }
-      return getAttributeDataProvider().setValue(value);
-   }
-
-   @Override
    public Double convertStringToValue(String value) {
       Double toReturn = null;
       if (isValidDouble(value)) {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/IdentityReferenceAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/IdentityReferenceAttribute.java
index da19e88..ff3a466 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/IdentityReferenceAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/IdentityReferenceAttribute.java
@@ -13,7 +13,6 @@
 import org.eclipse.osee.framework.jdk.core.type.BaseId;
 import org.eclipse.osee.framework.jdk.core.type.Id;
 import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
-import org.eclipse.osee.framework.skynet.core.attribute.service.AttributeAdapterService;
 import org.eclipse.osee.framework.skynet.core.internal.ServiceUtil;
 
 public abstract class IdentityReferenceAttribute<T extends Id> extends CharacterBackedAttribute<T> {
@@ -25,13 +24,11 @@
 
    @Override
    public T convertStringToValue(String value) {
-      AttributeAdapterService service = getAttributeAdapter();
-      T identity = service.adapt(this, new BaseId(Long.valueOf(value)));
-      return identity;
+      return ServiceUtil.getAttributeAdapterService().adapt(this, new BaseId(Long.valueOf(value)));
    }
 
-   private AttributeAdapterService getAttributeAdapter() throws OseeCoreException {
-      return ServiceUtil.getAttributeAdapterService();
+   @Override
+   protected boolean subClassSetValue(Id value) {
+      return getAttributeDataProvider().setValue(value.getIdString());
    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/IntegerAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/IntegerAttribute.java
index e03b0d1..ff0e2b8 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/IntegerAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/IntegerAttribute.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.osee.framework.skynet.core.attribute;
 
-import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
 import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
 import org.eclipse.osee.framework.jdk.core.util.Strings;
 
@@ -27,14 +26,6 @@
    }
 
    @Override
-   public boolean subClassSetValue(Integer value) throws OseeCoreException {
-      if (value == null) {
-         throw new OseeArgumentException("Attribute value was null");
-      }
-      return getAttributeDataProvider().setValue(value);
-   }
-
-   @Override
    public Integer convertStringToValue(String value) {
       Integer toReturn = null;
       if (isValidInteger(value)) {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/JavaObjectAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/JavaObjectAttribute.java
index b64c08f..4d478cb 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/JavaObjectAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/JavaObjectAttribute.java
@@ -60,7 +60,7 @@
    }
 
    @Override
-   public boolean subClassSetValue(Object value) {
+   protected boolean subClassSetValue(Object value) {
       try {
          ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
          ObjectOutputStream objectStream = new ObjectOutputStream(byteStream);
@@ -68,7 +68,7 @@
          objectStream.flush();
          objectStream.close();
          getAttributeDataProvider().setValue(ByteBuffer.wrap(byteStream.toByteArray()));
-         getAttributeDataProvider().setDisplayableString(value != null ? value.getClass().getName() : "null");
+         getAttributeDataProvider().setDisplayableString(value.getClass().getName());
       } catch (Exception ex) {
          OseeLog.log(Activator.class, Level.SEVERE, ex);
       }
@@ -77,9 +77,6 @@
 
    @Override
    public Object convertStringToValue(String value) {
-      if (value == null) {
-         return null;
-      }
       return getObjectFromBytes(ByteBuffer.wrap(value.getBytes()));
    }
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/LongAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/LongAttribute.java
index 6986375..8607977 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/LongAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/LongAttribute.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.osee.framework.skynet.core.attribute;
 
-import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
 import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
 import org.eclipse.osee.framework.jdk.core.util.Strings;
 
@@ -27,14 +26,6 @@
    }
 
    @Override
-   public boolean subClassSetValue(Long value) throws OseeCoreException {
-      if (value == null) {
-         throw new OseeArgumentException("Attribute value was null");
-      }
-      return getAttributeDataProvider().setValue(value);
-   }
-
-   @Override
    public Long convertStringToValue(String value) {
       Long toReturn = null;
       if (isValidLong(value)) {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/OutlineNumberAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/OutlineNumberAttribute.java
index 4cc4764..d44de08 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/OutlineNumberAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/OutlineNumberAttribute.java
@@ -10,21 +10,5 @@
  *******************************************************************************/
 package org.eclipse.osee.framework.skynet.core.attribute;
 
-import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
-
-public class OutlineNumberAttribute extends CharacterBackedAttribute<String> {
-   @Override
-   public String getValue() throws OseeCoreException {
-      return getAttributeDataProvider().getValueAsString();
-   }
-
-   @Override
-   public boolean subClassSetValue(String value) throws OseeCoreException {
-      return getAttributeDataProvider().setValue(value);
-   }
-
-   @Override
-   public String convertStringToValue(String value) {
-      return value;
-   }
-}
+public class OutlineNumberAttribute extends StringAttribute {
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/StringAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/StringAttribute.java
index a976935..dd87af7 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/StringAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/StringAttribute.java
@@ -22,11 +22,6 @@
    }
 
    @Override
-   public boolean subClassSetValue(String value) throws OseeCoreException {
-      return getAttributeDataProvider().setValue(value);
-   }
-
-   @Override
    public String convertStringToValue(String value) {
       return value;
    }
@@ -35,4 +30,4 @@
    public String getDisplayableString() throws OseeCoreException {
       return getValue();
    }
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/WordAttribute.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/WordAttribute.java
index 2a44ff1..71b3cdb 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/WordAttribute.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/WordAttribute.java
@@ -37,7 +37,7 @@
    private static final IStatus promptStatus = new Status(IStatus.WARNING, Activator.PLUGIN_ID, 256, "", null);
 
    @Override
-   public boolean subClassSetValue(String value) throws OseeCoreException {
+   protected boolean subClassSetValue(String value) {
       value = checkForTrackedChanges(value);
       value = WordUtil.removeWordMarkupSmartTags(value);
       return super.subClassSetValue(value);
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/providers/IAttributeDataProvider.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/providers/IAttributeDataProvider.java
index 5e38ab6..41bffd2 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/providers/IAttributeDataProvider.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/providers/IAttributeDataProvider.java
@@ -24,6 +24,8 @@
 
    public void loadData(Object... objects) throws OseeCoreException;
 
+   public Object getValue();
+
    public Object[] getData() throws OseeDataStoreException;
 
    public void persist(int storageId) throws OseeCoreException;
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/providers/ICharacterAttributeDataProvider.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/providers/ICharacterAttributeDataProvider.java
index 6660485..42c6d6d 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/providers/ICharacterAttributeDataProvider.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/providers/ICharacterAttributeDataProvider.java
@@ -19,8 +19,5 @@
 
    public String getValueAsString() throws OseeCoreException;
 
-   public Object getValue();
-
    public boolean setValue(Object value) throws OseeCoreException;
-
-}
+}
\ No newline at end of file
