diff --git a/Demo/pdist/rcvs.py b/Demo/pdist/rcvs.py
index fe8651c..5b7ace8 100755
--- a/Demo/pdist/rcvs.py
+++ b/Demo/pdist/rcvs.py
@@ -23,14 +23,59 @@
 		'A' -- new locally
 		'R' -- deleted locally
 		'U' -- changed remotely, no changes locally
+		       (includes new remotely or deleted remotely)
 		'M' -- changed locally, no changes remotely
 		'C' -- conflict: changed locally as well as remotely
 		       (includes cases where the file has been added
 		       or removed locally and remotely)
+		'r' -- get rid of entry
+		'c' -- create entry
+		'u' -- update entry
 		"""
 		if not self.eseen:
-			pass
-		return '?'
+			if not self.lseen:
+				if not self.rseen: return '0' # Never heard of
+				else:
+					return 'N' # New remotely
+			else: # self.lseen
+				if not self.rseen: return '?' # Local only
+				# Local and remote, but no entry
+				if self.lsum == self.rsum:
+					return 'c' # Restore entry only
+				else: return 'C' # Real conflict
+		else: # self.eseen
+			if not self.lseen:
+				if self.eremoved:
+					if self.rseen: return 'R' # Removed
+					else: return 'r' # Get rid of entry
+				else: # not self.eremoved
+					if self.rseen:
+						print "warning:",
+						print self.file,
+						print "was lost"
+						return 'U'
+					else: return 'r' # Get rid of entry
+			else: # self.lseen
+				if not self.rseen:
+					if self.enew: return 'A' # New locally
+					else: return 'D' # Deleted remotely
+				else: # self.rseen
+					if self.enew:
+						if self.lsum == self.rsum:
+							return 'u'
+						else:
+							return 'C'
+					if self.lsum == self.esum:
+						if self.esum == self.rsum:
+							return '='
+						else:
+							return 'U'
+					elif self.esum == self.rsum:
+						return 'M'
+					elif self.lsum == self.rsum:
+						return 'u'
+					else:
+						return 'C'
 
 	def update(self):
 		code = self.action()
@@ -127,7 +172,8 @@
 		files = []
 		if self.cvs.checkfiles(files):
 			return 1
-		self.cvs.report()
+		for file in files:
+			print self.cvs.entries[file].action(), file
 
 	def do_update(self, opts, files):
 		"""update [file] ..."""
@@ -138,6 +184,7 @@
 				print "%s: not found" % file
 			else:
 				self.cvs.entries[file].update()
+		self.cvs.putentries()
 
 	def do_commit(self, opts, files):
 		"""commit [file] ..."""
@@ -145,13 +192,14 @@
 			return 1
 		sts = 0
 		for file in files:
-			if not self.entries[file].commitcheck():
+			if not self.cvs.entries[file].commitcheck():
 				sts = 1
 		if sts:
 			return sts
 		message = raw_input("One-liner: ")
 		for file in files:
-			self.entries[file].commit(message)
+			self.cvs.entries[file].commit(message)
+		self.cvs.putentries()
 
 
 def main():
