diff --git a/obj/APSysData.cpp b/obj/APSysData.cpp
index dfff18ab60c04954c894c56c5951e998cfb81dad..e33b4e3765b705fc22d0deb061a09238dbbd2ac7 100644
--- a/obj/APSysData.cpp
+++ b/obj/APSysData.cpp
@@ -11,18 +11,70 @@ APSysData::APSysData() A_P_SYS_DATA_CONSTRUCT {}
 APSysData::~APSysData() {}
 
 void APSysData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
-	A_P_SYS_DATA_READ
+	//A_P_SYS_DATA_READ
+TriBasedGeomData::Read( in, link_stack, version ); \
+ushort numVertices = ushort(vertices.size());
+NifStream( hasUnknownFloats1, in, version ); \
+if ( hasUnknownFloats1 != 0 ) { \
+  unknownFloats1.resize(numVertices); \
+  for (uint i1 = 0; i1 < numVertices; i1++) { \
+    NifStream( unknownFloats1[i1], in, version ); \
+  }; \
+}; \
+NifStream( unknownShort3, in, version ); \
+NifStream( hasUnknownFloats2, in, version ); \
+if ( hasUnknownFloats2 != 0 ) { \
+  unknownFloats2.resize(numVertices); \
+  for (uint i1 = 0; i1 < numVertices; i1++) { \
+    NifStream( unknownFloats2[i1], in, version ); \
+  }; \
+}; \
+NifStream( unknownByte1, in, version ); \
 }
 
 void APSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_P_SYS_DATA_WRITE
+	//A_P_SYS_DATA_WRITE
+TriBasedGeomData::Write( out, link_map, version ); \
+ushort numVertices = ushort(vertices.size());
+NifStream( hasUnknownFloats1, out, version ); \
+if ( hasUnknownFloats1 != 0 ) { \
+  for (uint i1 = 0; i1 < numVertices; i1++) { \
+    NifStream( unknownFloats1[i1], out, version ); \
+  }; \
+}; \
+NifStream( unknownShort3, out, version ); \
+NifStream( hasUnknownFloats2, out, version ); \
+if ( hasUnknownFloats2 != 0 ) { \
+  for (uint i1 = 0; i1 < numVertices; i1++) { \
+    NifStream( unknownFloats2[i1], out, version ); \
+  }; \
+}; \
+NifStream( unknownByte1, out, version ); \
 }
 
 string APSysData::asString( bool verbose ) const {
-	A_P_SYS_DATA_STRING
+	//A_P_SYS_DATA_STRING
+ushort numVertices = ushort(vertices.size());
+stringstream out; \
+out << TriBasedGeomData::asString(); \
+out << "Has Unknown Floats 1:  " << hasUnknownFloats1 << endl; \
+if ( hasUnknownFloats1 != 0 ) { \
+  for (uint i1 = 0; i1 < numVertices; i1++) { \
+    out << "    Unknown Floats 1[" << i1 << "]:  " << unknownFloats1[i1] << endl; \
+  }; \
+}; \
+out << "Unknown Short 3:  " << unknownShort3 << endl; \
+out << "Has Unknown Floats 2:  " << hasUnknownFloats2 << endl; \
+if ( hasUnknownFloats2 != 0 ) { \
+  for (uint i1 = 0; i1 < numVertices; i1++) { \
+    out << "    Unknown Floats 2[" << i1 << "]:  " << unknownFloats2[i1] << endl; \
+  }; \
+}; \
+out << "Unknown Byte 1:  " << unknownByte1 << endl; \
+return out.str(); \
 }
 
 void APSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
-	A_P_SYS_DATA_FIXLINKS
+	//A_P_SYS_DATA_FIXLINKS // no links
 }
 
diff --git a/obj/TriBasedGeomData.h b/obj/TriBasedGeomData.h
index 5cfab3529500c418af9ac10c4bf38b86470c08ef..a01568315e4009247274f08cbd01840506f94fa3 100644
--- a/obj/TriBasedGeomData.h
+++ b/obj/TriBasedGeomData.h
@@ -27,7 +27,7 @@ public:
 	
 	Vector3 Center() const;
 	float Radius() const;
-private:
+protected:
 	TRI_BASED_GEOM_DATA_MEMBERS
 };
 #endif