diff --git a/Lib/aifc.py b/Lib/aifc.py
index 0c62f8d..cd414c0 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -135,10 +135,6 @@
 
 import struct
 import __builtin__
-try:
-	import CL
-except ImportError:
-	pass
 
 Error = 'aifc.Error'
 
@@ -378,13 +374,14 @@
 		if not self._comm_chunk_read or not self._ssnd_chunk:
 			raise Error, 'COMM chunk and/or SSND chunk missing'
 		if self._aifc and self._decomp:
-			params = [CL.ORIGINAL_FORMAT, 0,
-				  CL.BITS_PER_COMPONENT, self._sampwidth * 8,
-				  CL.FRAME_RATE, self._framerate]
+			import cl
+			params = [cl.ORIGINAL_FORMAT, 0,
+				  cl.BITS_PER_COMPONENT, self._sampwidth * 8,
+				  cl.FRAME_RATE, self._framerate]
 			if self._nchannels == 1:
-				params[1] = CL.MONO
+				params[1] = cl.MONO
 			elif self._nchannels == 2:
-				params[1] = CL.STEREO_INTERLEAVED
+				params[1] = cl.STEREO_INTERLEAVED
 			else:
 				raise Error, 'cannot compress more than 2 channels'
 			self._decomp.SetParams(params)
@@ -483,7 +480,8 @@
 ## 	if 0: access *: private
 
 	def _decomp_data(self, data):
-		dummy = self._decomp.SetParam(CL.FRAME_BUFFER_SIZE,
+		import cl
+		dummy = self._decomp.SetParam(cl.FRAME_BUFFER_SIZE,
 					      len(data) * 2)
 		return self._decomp.Decompress(len(data) / self._nchannels,
 					       data)
@@ -537,7 +535,7 @@
 						return
 				# for ULAW and ALAW try Compression Library
 				try:
-					import cl, CL
+					import cl
 				except ImportError:
 					if self._comptype == 'ULAW':
 						try:
@@ -549,10 +547,10 @@
 							pass
 					raise Error, 'cannot read compressed AIFF-C files'
 				if self._comptype == 'ULAW':
-					scheme = CL.G711_ULAW
+					scheme = cl.G711_ULAW
 					self._framesize = self._framesize / 2
 				elif self._comptype == 'ALAW':
-					scheme = CL.G711_ALAW
+					scheme = cl.G711_ALAW
 					self._framesize = self._framesize / 2
 				else:
 					raise Error, 'unsupported compression type'
@@ -810,8 +808,9 @@
 ## 	if 0: access *: private
 
 	def _comp_data(self, data):
-		dum = self._comp.SetParam(CL.FRAME_BUFFER_SIZE, len(data))
-		dum = self._comp.SetParam(CL.COMPRESSED_BUFFER_SIZE, len(data))
+		import cl
+		dum = self._comp.SetParam(cl.FRAME_BUFFER_SIZE, len(data))
+		dum = self._comp.SetParam(cl.COMPRESSED_BUFFER_SIZE, len(data))
 		return self._comp.Compress(nframes, data)
 
 	def _lin2ulaw(self, data):
@@ -852,7 +851,7 @@
 			self._convert = self._lin2adpcm
 			return
 		try:
-			import cl, CL
+			import cl
 		except ImportError:
 			if self._comptype == 'ULAW':
 				try:
@@ -863,21 +862,21 @@
 					pass
 			raise Error, 'cannot write compressed AIFF-C files'
 		if self._comptype == 'ULAW':
-			scheme = CL.G711_ULAW
+			scheme = cl.G711_ULAW
 		elif self._comptype == 'ALAW':
-			scheme = CL.G711_ALAW
+			scheme = cl.G711_ALAW
 		else:
 			raise Error, 'unsupported compression type'
 		self._comp = cl.OpenCompressor(scheme)
-		params = [CL.ORIGINAL_FORMAT, 0,
-			  CL.BITS_PER_COMPONENT, self._sampwidth * 8,
-			  CL.FRAME_RATE, self._framerate,
-			  CL.FRAME_BUFFER_SIZE, 100,
-			  CL.COMPRESSED_BUFFER_SIZE, 100]
+		params = [cl.ORIGINAL_FORMAT, 0,
+			  cl.BITS_PER_COMPONENT, self._sampwidth * 8,
+			  cl.FRAME_RATE, self._framerate,
+			  cl.FRAME_BUFFER_SIZE, 100,
+			  cl.COMPRESSED_BUFFER_SIZE, 100]
 		if self._nchannels == 1:
-			params[1] = CL.MONO
+			params[1] = cl.MONO
 		elif self._nchannels == 2:
-			params[1] = CL.STEREO_INTERLEAVED
+			params[1] = cl.STEREO_INTERLEAVED
 		else:
 			raise Error, 'cannot compress more than 2 channels'
 		self._comp.SetParams(params)
diff --git a/Lib/plat-irix5/jpeg.py b/Lib/plat-irix5/jpeg.py
index 85d6d83..2e7ced5 100755
--- a/Lib/plat-irix5/jpeg.py
+++ b/Lib/plat-irix5/jpeg.py
@@ -14,22 +14,22 @@
 
 def compress(imgdata, width, height, bytesperpixel):
 	global comp
-	import cl, CL
-	if comp is None: comp = cl.OpenCompressor(CL.JPEG)
+	import cl
+	if comp is None: comp = cl.OpenCompressor(cl.JPEG)
 	if bytesperpixel == 1:
-		format = CL.GRAYSCALE
+		format = cl.GRAYSCALE
 	elif bytesperpixel == 4:
-		format = CL.RGBX
+		format = cl.RGBX
 	if options['forcegray']:
-		iformat = CL.GRAYSCALE
+		iformat = cl.GRAYSCALE
 	else:
-		iformat = CL.YUV
+		iformat = cl.YUV
 	# XXX How to support 'optimize'?
-	params = [CL.IMAGE_WIDTH, width, CL.IMAGE_HEIGHT, height, \
-		  CL.ORIGINAL_FORMAT, format, \
-		  CL.ORIENTATION, CL.BOTTOM_UP, \
-		  CL.QUALITY_FACTOR, options['quality'], \
-		  CL.INTERNAL_FORMAT, iformat, \
+	params = [cl.IMAGE_WIDTH, width, cl.IMAGE_HEIGHT, height, \
+		  cl.ORIGINAL_FORMAT, format, \
+		  cl.ORIENTATION, cl.BOTTOM_UP, \
+		  cl.QUALITY_FACTOR, options['quality'], \
+		  cl.INTERNAL_FORMAT, iformat, \
 		 ]
 	comp.SetParams(params)
 	jpegdata = comp.Compress(1, imgdata)
@@ -37,22 +37,22 @@
 
 def decompress(jpegdata):
 	global decomp
-	import cl, CL
-	if decomp is None: decomp = cl.OpenDecompressor(CL.JPEG)
+	import cl
+	if decomp is None: decomp = cl.OpenDecompressor(cl.JPEG)
 	headersize = decomp.ReadHeader(jpegdata)
-	params = [CL.IMAGE_WIDTH, 0, CL.IMAGE_HEIGHT, 0, CL.INTERNAL_FORMAT, 0]
+	params = [cl.IMAGE_WIDTH, 0, cl.IMAGE_HEIGHT, 0, cl.INTERNAL_FORMAT, 0]
 	decomp.GetParams(params)
 	width, height, format = params[1], params[3], params[5]
-	if format == CL.GRAYSCALE or options['forcegray']:
-		format = CL.GRAYSCALE
+	if format == cl.GRAYSCALE or options['forcegray']:
+		format = cl.GRAYSCALE
 		bytesperpixel = 1
 	else:
-		format = CL.RGBX
+		format = cl.RGBX
 		bytesperpixel = 4
 	# XXX How to support 'smooth'?
-	params = [CL.ORIGINAL_FORMAT, format, \
-		  CL.ORIENTATION, CL.BOTTOM_UP, \
-		  CL.FRAME_BUFFER_SIZE, width*height*bytesperpixel]
+	params = [cl.ORIGINAL_FORMAT, format, \
+		  cl.ORIENTATION, cl.BOTTOM_UP, \
+		  cl.FRAME_BUFFER_SIZE, width*height*bytesperpixel]
 	decomp.SetParams(params)
 	imgdata = decomp.Decompress(1, jpegdata)
 	return imgdata, width, height, bytesperpixel
diff --git a/Lib/plat-irix6/jpeg.py b/Lib/plat-irix6/jpeg.py
index 85d6d83..c1ed669 100644
--- a/Lib/plat-irix6/jpeg.py
+++ b/Lib/plat-irix6/jpeg.py
@@ -14,22 +14,22 @@
 
 def compress(imgdata, width, height, bytesperpixel):
 	global comp
-	import cl, CL
-	if comp is None: comp = cl.OpenCompressor(CL.JPEG)
+	import cl
+	if comp is None: comp = cl.OpenCompressor(cl.JPEG)
 	if bytesperpixel == 1:
-		format = CL.GRAYSCALE
+		format = cl.GRAYSCALE
 	elif bytesperpixel == 4:
-		format = CL.RGBX
+		format = cl.RGBX
 	if options['forcegray']:
-		iformat = CL.GRAYSCALE
+		iformat = cl.GRAYSCALE
 	else:
-		iformat = CL.YUV
+		iformat = cl.YUV
 	# XXX How to support 'optimize'?
-	params = [CL.IMAGE_WIDTH, width, CL.IMAGE_HEIGHT, height, \
-		  CL.ORIGINAL_FORMAT, format, \
-		  CL.ORIENTATION, CL.BOTTOM_UP, \
-		  CL.QUALITY_FACTOR, options['quality'], \
-		  CL.INTERNAL_FORMAT, iformat, \
+	params = [cl.IMAGE_WIDTH, width, cl.IMAGE_HEIGHT, height,
+		  cl.ORIGINAL_FORMAT, format,
+		  cl.ORIENTATION, cl.BOTTOM_UP,
+		  cl.QUALITY_FACTOR, options['quality'],
+		  cl.INTERNAL_FORMAT, iformat,
 		 ]
 	comp.SetParams(params)
 	jpegdata = comp.Compress(1, imgdata)
@@ -37,22 +37,22 @@
 
 def decompress(jpegdata):
 	global decomp
-	import cl, CL
-	if decomp is None: decomp = cl.OpenDecompressor(CL.JPEG)
+	import cl
+	if decomp is None: decomp = cl.OpenDecompressor(cl.JPEG)
 	headersize = decomp.ReadHeader(jpegdata)
-	params = [CL.IMAGE_WIDTH, 0, CL.IMAGE_HEIGHT, 0, CL.INTERNAL_FORMAT, 0]
+	params = [cl.IMAGE_WIDTH, 0, cl.IMAGE_HEIGHT, 0, cl.INTERNAL_FORMAT, 0]
 	decomp.GetParams(params)
 	width, height, format = params[1], params[3], params[5]
-	if format == CL.GRAYSCALE or options['forcegray']:
-		format = CL.GRAYSCALE
+	if format == cl.GRAYSCALE or options['forcegray']:
+		format = cl.GRAYSCALE
 		bytesperpixel = 1
 	else:
-		format = CL.RGBX
+		format = cl.RGBX
 		bytesperpixel = 4
 	# XXX How to support 'smooth'?
-	params = [CL.ORIGINAL_FORMAT, format, \
-		  CL.ORIENTATION, CL.BOTTOM_UP, \
-		  CL.FRAME_BUFFER_SIZE, width*height*bytesperpixel]
+	params = [cl.ORIGINAL_FORMAT, format,
+		  cl.ORIENTATION, cl.BOTTOM_UP,
+		  cl.FRAME_BUFFER_SIZE, width*height*bytesperpixel]
 	decomp.SetParams(params)
 	imgdata = decomp.Decompress(1, jpegdata)
 	return imgdata, width, height, bytesperpixel
