diff --git a/Demo/pdist/rcvs.py b/Demo/pdist/rcvs.py
index 46f41a8..f7cdb41 100755
--- a/Demo/pdist/rcvs.py
+++ b/Demo/pdist/rcvs.py
@@ -8,11 +8,10 @@
 # - if the remote file is deleted, "rcvs update" will fail
 #
 # Functionality:
-# - descend into directories (alraedy done for update)
-# - cvs add; cvs rm
-# - commit new files
-# - conflict resolution
 # - cvs log
+# - cvs rm
+# - descend into directories (alraedy done for update)
+# - conflict resolution
 # - other relevant commands?
 # - branches
 #
@@ -191,7 +190,8 @@
 	def put(self, message = ""):
 		print "Checking in", self.file, "..."
 		data = open(self.file).read()
-		self.proxy.lock(self.file)
+		if not self.enew:
+			self.proxy.lock(self.file)
 		messages = self.proxy.put(self.file, data, message)
 		if messages:
 			print messages
@@ -204,6 +204,16 @@
 		f.close()
 		self.setentry(self.rrev, self.rsum)
 
+	def add(self):
+		self.eseen = 0		# While we're hacking...
+		self.esum = self.lsum
+		self.emtime, self.ectime = 0, 0
+		self.erev = ''
+		self.enew = 1
+		self.edeleted = 0
+		self.eseen = 1		# Done
+		self.extra = ''
+
 	def setentry(self, erev, esum):
 		self.eseen = 0		# While we're hacking...
 		self.esum = esum
@@ -252,9 +262,11 @@
 			return
 		if not message:
 			message = raw_input("One-liner: ")
+		committed = []
 		for e in list:
+			committed.append(e.file)
 			e.commit(message)
-		self.mailinfo(files, message)
+		self.mailinfo(committed, message)
 
 	def mailinfo(self, files, message = ""):
 		towhom = "sjoerd@cwi.nl, jack@cwi.nl" # XXX
@@ -283,6 +295,25 @@
 		for e in self.whichentries(files):
 			e.diff(opts)
 
+	def add(self, files):
+		if not files:
+			raise RuntimeError, "'cvs add' needs at least one file"
+		list = []
+		for e in self.whichentries(files, 1):
+			code = e.action()
+			print code, e.file
+			e.report()
+			e.add()
+			code = e.action()
+			print code, e.file
+			e.report()
+			print '='*20
+
+	def rm(self, files):
+		if not files:
+			raise RuntimeError, "'cvs rm' needs at least one file"
+		raise RuntimeError, "'cvs rm' not yet imlemented"
+
 	def whichentries(self, files, localfilestoo = 0):
 		if files:
 			list = []
@@ -367,6 +398,9 @@
 	def default(self):
 		self.cvs.report([])
 
+	def do_report(self, opts, files):
+		self.cvs.report(files)
+
 	def do_update(self, opts, files):
 		"""update [-l] [-R] [file] ..."""
 		local = DEF_LOCAL
@@ -399,6 +433,24 @@
 	do_dif = do_diff
 	flags_dif = flags_diff
 
+	def do_add(self, opts, files):
+		"""add file ..."""
+		if not files:
+			print "'rcvs add' requires at least one file"
+			return
+		self.cvs.add(files)
+		self.cvs.putentries()
+
+	def do_remove(self, opts, files):
+		"""remove file ..."""
+		if not files:
+			print "'rcvs remove' requires at least one file"
+			return
+		self.cvs.remove(files)
+		self.cvs.putentries()
+	do_rm = do_remove
+
+
 
 
 def remove(fn):
