diff --git a/Demo/sgi/video/VFile.py b/Demo/sgi/video/VFile.py
index f588f4b..2f435d4 100755
--- a/Demo/sgi/video/VFile.py
+++ b/Demo/sgi/video/VFile.py
@@ -345,15 +345,15 @@
 		if self.format <> 'compress':
 			return data
 		if not self.decompressor:
-			import cl, CL
+			import cl
 			scheme = cl.QueryScheme(self.compressheader)
 			self.decompressor = cl.OpenDecompressor(scheme)
 			headersize = self.decompressor.ReadHeader(self.compressheader)
-			width = self.decompressor.GetParam(CL.IMAGE_WIDTH)
-			height = self.decompressor.GetParam(CL.IMAGE_HEIGHT)
-			params = [CL.ORIGINAL_FORMAT, CL.RGBX, \
-				  CL.ORIENTATION, CL.BOTTOM_UP, \
-				  CL.FRAME_BUFFER_SIZE, width*height*CL.BytesPerPixel(CL.RGBX)]
+			width = self.decompressor.GetParam(cl.IMAGE_WIDTH)
+			height = self.decompressor.GetParam(cl.IMAGE_HEIGHT)
+			params = [cl.ORIGINAL_FORMAT, cl.RGBX, \
+				  cl.ORIENTATION, cl.BOTTOM_UP, \
+				  cl.FRAME_BUFFER_SIZE, width*height*cl.BytesPerPixel(cl.RGBX)]
 			self.decompressor.SetParams(params)
 		data = self.decompressor.Decompress(1, data)
 		return data
diff --git a/Demo/sgi/video/Vb.py b/Demo/sgi/video/Vb.py
index ec59f22..e1b06d6 100755
--- a/Demo/sgi/video/Vb.py
+++ b/Demo/sgi/video/Vb.py
@@ -33,7 +33,6 @@
 import VCR
 try:
 	import cl
-	import CL
 except ImportError:
 	cl = None
 
@@ -200,10 +199,10 @@
 			self.c_rgb24_size.addto_choice(label)
 		self.c_rgb24_size.set_choice(self.rgb24_size)
 		if cl:
-			algs = cl.QueryAlgorithms(CL.VIDEO)
+			algs = cl.QueryAlgorithms(cl.VIDEO)
 			self.all_comp_schemes = []
 			for i in range(0, len(algs), 2):
-				if algs[i+1] in (CL.COMPRESSOR, CL.CODEC):
+				if algs[i+1] in (cl.COMPRESSOR, cl.CODEC):
 					self.all_comp_schemes.append(algs[i])
 			self.c_cformat.clear_choice()
 			for label in self.all_comp_schemes:
@@ -778,11 +777,11 @@
 
 	def init_compressor(self, w, h):
 		self.compressor = None
-		scheme = cl.QuerySchemeFromName(CL.VIDEO, self.comp_scheme)
+		scheme = cl.QuerySchemeFromName(cl.VIDEO, self.comp_scheme)
 		self.compressor = cl.OpenCompressor(scheme)
-		parambuf = [CL.IMAGE_WIDTH, w, \
-			  CL.IMAGE_HEIGHT, h, \
-			  CL.ORIGINAL_FORMAT, CL.YUV422DC]
+		parambuf = [cl.IMAGE_WIDTH, w, \
+			  cl.IMAGE_HEIGHT, h, \
+			  cl.ORIGINAL_FORMAT, cl.YUV422DC]
 		self.compressor.SetParams(parambuf)
 		return self.compressor.Compress(0, '')
 
