diff --git a/Demo/sockets/mcast.py b/Demo/sockets/mcast.py
index c2bcaef..4011383 100755
--- a/Demo/sockets/mcast.py
+++ b/Demo/sockets/mcast.py
@@ -14,14 +14,23 @@
 import regsub
 from socket import *
 from SOCKET import *
-from IN import *			# Local module, SGI specific!!!
+from IN import *			# SGI specific!!! (Sorry)
 
-sender = sys.argv[1:]
 
-s = socket(AF_INET, SOCK_DGRAM)
+# Main program
+def main():
+	flags = sys.argv[1:]
+	#
+	if flags:
+		sender(flags[0])
+	else:
+		receiver()
 
-if sender:
-	if sys.argv[1] == '-b':
+
+# Sender subroutine (only one per local area network)
+def sender(flag):
+	s = socket(AF_INET, SOCK_DGRAM)
+	if flag == '-b':
 		s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
 		mygroup = '<broadcast>'
 	else:
@@ -33,27 +42,56 @@
 ##		data = data + (1400 - len(data)) * '\0'
 		s.sendto(data, (mygroup, MYPORT))
 		time.sleep(1)
-else:
-	# Allow multiple copies of this program on one machine
-	s.setsockopt(SOL_SOCKET, SO_REUSEPORT, 1) # (Not strictly needed)
 
-	# Bind the socket to my port
-	s.bind('', MYPORT)
 
-	# Construct binary group address from MYGROUP converted to bytes
-	bytes = eval(regsub.gsub('\.', ',', MYGROUP))
-	grpaddr = 0
-	for byte in bytes: grpaddr = (grpaddr << 8) | byte
-
-	# Construct struct mreq from grpaddr and ifaddr
-	ifaddr = INADDR_ANY
-	mreq = struct.pack('ll', grpaddr, ifaddr)
-
-	# Add group membership
-	s.setsockopt(IPPROTO_IP, IP_ADD_MEMBERSHIP, mreq)
-
+# Receiver subroutine (as many as you like)
+def receiver():
+	# Open and initialize the socket
+	s = openmcastsock(MYGROUP, MYPORT)
+	#
 	# Loop, printing any data we receive
 	while 1:
 		data, sender = s.recvfrom(1500)
 		while data[-1:] == '\0': data = data[:-1] # Strip trailing \0's
 		print sender, ':', `data`
+
+
+# Open a UDP socket, bind it to a port and select a multicast group
+def openmcastsock(group, port):
+	# Import modules used only here
+	import regsub
+	import socket
+	import struct
+	from SOCKET import *
+	from IN import *
+	#
+	# Create a socket
+	s = socket.socket(AF_INET, SOCK_DGRAM)
+	#
+	# Allow multiple copies of this program on one machine
+	# (not strictly needed)
+	s.setsockopt(SOL_SOCKET, SO_REUSEPORT, 1)
+	#
+	# Bind it to the port
+	s.bind('', port)
+	#
+	# Look up multicast group address in name server
+	# (doesn't hurt if it is already in ddd.ddd.ddd.ddd format)
+	group = socket.gethostbyname(group)
+	#
+	# Construct binary group address
+	bytes = eval(regsub.gsub('\.', ',', group))
+	grpaddr = 0
+	for byte in bytes: grpaddr = (grpaddr << 8) | byte
+	#
+	# Construct struct mreq from grpaddr and ifaddr
+	ifaddr = INADDR_ANY
+	mreq = struct.pack('ll', grpaddr, ifaddr)
+	#
+	# Add group membership
+	s.setsockopt(IPPROTO_IP, IP_ADD_MEMBERSHIP, mreq)
+	#
+	return s
+
+
+main()
