diff --git a/Lib/fontTools/ttLib/tables/otBase.py b/Lib/fontTools/ttLib/tables/otBase.py
index 51f7199..adf4fc6 100644
--- a/Lib/fontTools/ttLib/tables/otBase.py
+++ b/Lib/fontTools/ttLib/tables/otBase.py
@@ -217,13 +217,9 @@
 	def getDataLength(self):
 		"""Return the length of this table in bytes, without subtables."""
 		l = 0
-		if hasattr(self, "Extension"):
-			longOffset = 1
-		else:
-			longOffset = 0
 		for item in self.items:
 			if hasattr(item, "getData") or hasattr(item, "getCountData"):
-				if longOffset:
+				if self.longOffset:
 					l = l + 4  # sizeof(ULong)
 				else:
 					l = l + 2  # sizeof(UShort)
@@ -234,17 +230,13 @@
 	def getData(self):
 		"""Assemble the data for this writer/table, without subtables."""
 		items = list(self.items)  # make a shallow copy
-		if hasattr(self,"Extension"):
-			longOffset = 1
-		else:
-			longOffset = 0
 		pos = self.pos
 		numItems = len(items)
 		for i in range(numItems):
 			item = items[i]
 			
 			if hasattr(item, "getData"):
-				if longOffset:
+				if self.longOffset:
 					items[i] = packULong(item.pos - pos)
 				else:
 					try:
diff --git a/Lib/fontTools/ttLib/tables/otConverters.py b/Lib/fontTools/ttLib/tables/otConverters.py
index 07e5edc..0ddc04d 100644
--- a/Lib/fontTools/ttLib/tables/otConverters.py
+++ b/Lib/fontTools/ttLib/tables/otConverters.py
@@ -35,7 +35,7 @@
 	return converters, convertersByName
 
 
-class BaseConverter:
+class BaseConverter(object):
 	
 	"""Base class for converter objects. Apart from the constructor, this
 	is an abstract class."""
@@ -174,6 +174,8 @@
 
 class Table(Struct):
 
+	longOffset = False
+
 	def readOffset(self, reader):
 		return reader.readUShort()
 
@@ -202,6 +204,7 @@
 		return table
 	
 	def write(self, writer, font, tableDict, value, repeatIndex=None):
+		writer.longOffset = self.longOffset
 		if value is None:
 			self.writeNullOffset(writer)
 		else:
@@ -212,16 +215,21 @@
 			writer.writeSubTable(subWriter)
 			value.compile(subWriter, font)
 
+class LTable(Table):
+
+	longOffset = True
+
+	def readOffset(self, reader):
+		return reader.readULong()
+
+
 class SubTable(Table):
 	def getConverter(self, tableType, lookupType):
 		tableClass = self.lookupTypes[tableType][lookupType]
 		return self.__class__(self.name, self.repeat, self.repeatOffset, tableClass)
 
 
-class ExtSubTable(SubTable):
-	
-	def readOffset(self, reader):
-		return reader.readULong()
+class ExtSubTable(LTable, SubTable):
 	
 	def write(self, writer, font, tableDict, value, repeatIndex=None):
 		writer.Extension = 1 # actually, mere presence of the field flags it as an Ext Subtable writer.
@@ -322,7 +330,7 @@
 	"GlyphID":     GlyphID,
 	"struct":      Struct,
 	"Offset":      Table,
-	"LOffset":     ExtSubTable,
+	"LOffset":     LTable,
 	"ValueRecord": ValueRecord,
 	"DeltaValue":  DeltaValue,
 }
