diff --git a/Lib/fontTools/afmLib.py b/Lib/fontTools/afmLib.py
index 5cf5c8a..e927b6b 100644
--- a/Lib/fontTools/afmLib.py
+++ b/Lib/fontTools/afmLib.py
@@ -8,7 +8,7 @@
 import string
 import types
 
-__version__ = "$Id: afmLib.py,v 1.2 2001-04-30 14:40:17 Just Exp $"
+__version__ = "$Id: afmLib.py,v 1.3 2001-06-24 15:11:31 Just Exp $"
 
 
 # every single line starts with a "word"
@@ -189,7 +189,7 @@
 		assert len(components) == ncomponents
 		self._composites[charname] = components
 	
-	def write(self, path, sep = '\r'):
+	def write(self, path, sep='\r'):
 		import time
 		lines = [	"StartFontMetrics 2.0",
 				"Comment Generated by afmLib, version %s; at %s" % 
@@ -281,6 +281,12 @@
 	def comments(self):
 		return self._comments
 	
+	def addComment(self, comment):
+		self._comments.append(comment)
+	
+	def addComposite(self, glyphName, components):
+		self._composites[glyphName] = components
+	
 	def __getattr__(self, attr):
 		if self._attrs.has_key(attr):
 			return self._attrs[attr]
@@ -294,19 +300,42 @@
 		else:
 			self._attrs[attr] = value
 	
+	def __delattr__(self, attr):
+		# all attrs *not* starting with "_" are consider to be AFM keywords
+		if attr[:1] == "_":
+			try:
+				del self.__dict__[attr]
+			except KeyError:
+				raise AttributeError, attr
+		else:
+			try:
+				del self._attrs[attr]
+			except KeyError:
+				raise AttributeError, attr
+	
 	def __getitem__(self, key):
 		if type(key) == types.TupleType:
 			# key is a tuple, return the kernpair
-			if self._kerning.has_key(key):
-				return self._kerning[key]
-			else:
-				raise KeyError, "no kerning pair: " + str(key)
+			return self._kerning[key]
 		else:
 			# return the metrics instead
-			if self._chars.has_key(key):
-				return self._chars[key]
-			else:
-				raise KeyError, "metrics index " + str(key) + " out of range"
+			return self._chars[key]
+	
+	def __setitem__(self, key, value):
+		if type(key) == types.TupleType:
+			# key is a tuple, set kernpair
+			self._kerning[key] = value
+		else:
+			# set char metrics
+			self._chars[key] = value
+	
+	def __delitem__(self, key):
+		if type(key) == types.TupleType:
+			# key is a tuple, del kernpair
+			del self._kerning[key]
+		else:
+			# del char metrics
+			del self._chars[key]
 	
 	def __repr__(self):
 		if hasattr(self, "FullName"):
