diff --git a/Lib/lib-stdwin/Abstract.py b/Lib/lib-stdwin/Abstract.py
index 45d68ae..c6fe137 100644
--- a/Lib/lib-stdwin/Abstract.py
+++ b/Lib/lib-stdwin/Abstract.py
@@ -10,7 +10,7 @@
 # For historical reasons, button creation methods are called
 # define() while split creation methods are called create().
 
-class AbstractParent():
+class AbstractParent:
 	#
 	# Upcalls from child to parent
 	#
@@ -33,7 +33,7 @@
 	def scroll(self, (area, (dh, dv))): unimpl()
 	def settimer(self, itimer): unimpl()
 
-class AbstractChild():
+class AbstractChild:
 	#
 	# Downcalls from parent to child
 	#
@@ -59,5 +59,5 @@
 # Certain upcalls and downcalls can be handled transparently, but
 # for others (e.g., all geometry related calls) this is not possible.
 
-class AbstractSplit() = AbstractChild(), AbstractParent():
+class AbstractSplit(AbstractChild, AbstractParent):
 	pass
diff --git a/Lib/lib-stdwin/BoxParent.py b/Lib/lib-stdwin/BoxParent.py
index 7a0723a..d042e88 100644
--- a/Lib/lib-stdwin/BoxParent.py
+++ b/Lib/lib-stdwin/BoxParent.py
@@ -1,6 +1,6 @@
 from TransParent import TransParent
 
-class BoxParent() = TransParent():
+class BoxParent(TransParent):
 	#
 	def create(self, (parent, (dh, dv))):
 		self = TransParent.create(self, parent)
diff --git a/Lib/lib-stdwin/Buttons.py b/Lib/lib-stdwin/Buttons.py
index a218a99..949e128 100644
--- a/Lib/lib-stdwin/Buttons.py
+++ b/Lib/lib-stdwin/Buttons.py
@@ -22,7 +22,7 @@
 # disabled --> crossed out
 # hilited  --> inverted
 #
-class LabelAppearance():
+class LabelAppearance:
 	#
 	# Initialization
 	#
@@ -143,7 +143,7 @@
 
 # A Strut is a label with no width of its own.
 
-class StrutAppearance() = LabelAppearance():
+class StrutAppearance(LabelAppearance):
 	#
 	def getminsize(self, (m, (width, height))):
 		height = max(height, m.lineheight() + 6)
@@ -156,7 +156,7 @@
 # disabled --> crossed out
 # hilited  --> inverted
 #
-class ButtonAppearance() = LabelAppearance():
+class ButtonAppearance(LabelAppearance):
 	#
 	def drawpict(self, d):
 		d.box(_rect.inset(self.bounds, (1, 1)))
@@ -173,7 +173,7 @@
 # disabled --> whole button crossed out
 # hilited  --> box is inverted
 #
-class CheckAppearance() = LabelAppearance():
+class CheckAppearance(LabelAppearance):
 	#
 	def getminsize(self, (m, (width, height))):
 		minwidth = m.textwidth(self.text) + 6
@@ -207,7 +207,7 @@
 # disabled --> whole button crossed out
 # hilited  --> indicator is inverted
 #
-class RadioAppearance() = CheckAppearance():
+class RadioAppearance(CheckAppearance):
 	#
 	def drawpict(self, d):
 		(left, top), (right, bottom) = self.boxbounds
@@ -221,7 +221,7 @@
 
 # NoReactivity ignores mouse events.
 #
-class NoReactivity():
+class NoReactivity:
 	def init_reactivity(self): pass
 
 
@@ -237,7 +237,7 @@
 # There are usually extra conditions, e.g., hooks are only called
 # when the button is enabled, or active, or selected (on).
 #
-class BaseReactivity():
+class BaseReactivity:
 	#
 	def init_reactivity(self):
 		self.down_hook = self.move_hook = self.up_hook = \
@@ -279,7 +279,7 @@
 # ToggleReactivity acts like a simple pushbutton.
 # It toggles its hilite state on mouse down events.
 #
-class ToggleReactivity() = BaseReactivity():
+class ToggleReactivity(BaseReactivity):
 	#
 	def mouse_down(self, detail):
 		if self.enabled and self.mousetest(detail[_HV]):
@@ -308,7 +308,7 @@
 # TriggerReactivity acts like a fancy pushbutton.
 # It hilites itself while the mouse is down within its bounds.
 #
-class TriggerReactivity() = BaseReactivity():
+class TriggerReactivity(BaseReactivity):
 	#
 	def mouse_down(self, detail):
 		if self.enabled and self.mousetest(detail[_HV]):
@@ -336,7 +336,7 @@
 # CheckReactivity handles mouse events like TriggerReactivity,
 # It overrides the up_trigger method to flip its selected state.
 #
-class CheckReactivity() = TriggerReactivity():
+class CheckReactivity(TriggerReactivity):
 	#
 	def up_trigger(self):
 		self.select(not self.selected)
@@ -350,7 +350,7 @@
 # RadioReactivity turns itself on and the other buttons in its group
 # off when its up_trigger method is called.
 #
-class RadioReactivity() = TriggerReactivity():
+class RadioReactivity(TriggerReactivity):
 	#
 	def init_reactivity(self):
 		TriggerReactivity.init_reactivity(self)
@@ -370,7 +370,7 @@
 # Auxiliary class for 'define' method.
 # Call the initializers in the right order.
 #
-class Define():
+class Define:
 	#
 	def define(self, parent):
 		self.parent = parent
@@ -403,9 +403,9 @@
 
 # Ready-made button classes.
 #
-class Label() = NoReactivity(), LabelAppearance(), Define(): pass
-class Strut() = NoReactivity(), StrutAppearance(), Define(): pass
-class PushButton() = TriggerReactivity(), ButtonAppearance(), Define(): pass
-class CheckButton() = CheckReactivity(), CheckAppearance(), Define(): pass
-class RadioButton() = RadioReactivity(), RadioAppearance(), Define(): pass
-class ToggleButton() = ToggleReactivity(), ButtonAppearance(), Define(): pass
+class Label(NoReactivity, LabelAppearance, Define): pass
+class Strut(NoReactivity, StrutAppearance, Define): pass
+class PushButton(TriggerReactivity, ButtonAppearance, Define): pass
+class CheckButton(CheckReactivity, CheckAppearance, Define): pass
+class RadioButton(RadioReactivity, RadioAppearance, Define): pass
+class ToggleButton(ToggleReactivity, ButtonAppearance, Define): pass
diff --git a/Lib/lib-stdwin/CSplit.py b/Lib/lib-stdwin/CSplit.py
index a9d3556..5c57d90 100644
--- a/Lib/lib-stdwin/CSplit.py
+++ b/Lib/lib-stdwin/CSplit.py
@@ -7,7 +7,7 @@
 from math import pi, sin, cos
 from Split import Split
 
-class CSplit() = Split():
+class CSplit(Split):
 	#
 	def getminsize(self, (m, (width, height))):
 		# Since things look best if the children are spaced evenly
diff --git a/Lib/lib-stdwin/FormSplit.py b/Lib/lib-stdwin/FormSplit.py
index 521b9a8..16f3293 100644
--- a/Lib/lib-stdwin/FormSplit.py
+++ b/Lib/lib-stdwin/FormSplit.py
@@ -13,7 +13,7 @@
 
 from Split import Split
 
-class FormSplit() = Split():
+class FormSplit(Split):
 	#
 	def create(self, parent):
 		self.next_left = self.next_top = 0
diff --git a/Lib/lib-stdwin/HVSplit.py b/Lib/lib-stdwin/HVSplit.py
index c35ce4c..9790b7b 100644
--- a/Lib/lib-stdwin/HVSplit.py
+++ b/Lib/lib-stdwin/HVSplit.py
@@ -7,7 +7,7 @@
 
 from Split import Split
 
-class HVSplit() = Split():
+class HVSplit(Split):
 	#
 	def create(self, (parent, hv)):
 		# hv is 0 for HSplit, 1 for VSplit
@@ -53,10 +53,10 @@
 			# XXX too-small
 	#
 
-class HSplit() = HVSplit():
+class HSplit(HVSplit):
 	def create(self, parent):
 		return HVSplit.create(self, (parent, 0))
 
-class VSplit() = HVSplit():
+class VSplit(HVSplit):
 	def create(self, parent):
 		return HVSplit.create(self, (parent, 1))
diff --git a/Lib/lib-stdwin/Histogram.py b/Lib/lib-stdwin/Histogram.py
index 505bbaf..27ae673 100644
--- a/Lib/lib-stdwin/Histogram.py
+++ b/Lib/lib-stdwin/Histogram.py
@@ -4,7 +4,7 @@
 
 # A Histogram displays a histogram of numeric data.
 #
-class HistogramAppearance() = LabelAppearance(), Define():
+class HistogramAppearance(LabelAppearance, Define):
 	#
 	def define(self, parent):
 		Define.define(self, (parent, ''))
@@ -33,4 +33,4 @@
 			d.paint((h0, v0), (h1, v1))
 	#
 
-class Histogram() = NoReactivity(), HistogramAppearance(): pass
+class Histogram(NoReactivity, HistogramAppearance): pass
diff --git a/Lib/lib-stdwin/Sliders.py b/Lib/lib-stdwin/Sliders.py
index a07c3c4..0a709d6 100644
--- a/Lib/lib-stdwin/Sliders.py
+++ b/Lib/lib-stdwin/Sliders.py
@@ -22,7 +22,7 @@
 # It does not support any of the triggers or hooks defined by Buttons,
 # but defines its own setval_trigger and setval_hook.
 #
-class DragSliderReactivity() = BaseReactivity():
+class DragSliderReactivity(BaseReactivity):
 	#
 	def mouse_down(self, detail):
 		h, v = hv = detail[_HV]
@@ -43,7 +43,7 @@
 			self.active = 0
 	#
 
-class DragSliderAppearance() = ButtonAppearance():
+class DragSliderAppearance(ButtonAppearance):
 	#
 	# INVARIANTS maintained by the setval method:
 	#
@@ -94,14 +94,14 @@
 		self.settext(self.pretext + `self.val` + self.postext)
 	#
 
-class DragSlider() = DragSliderReactivity(), DragSliderAppearance(), Define():
+class DragSlider(DragSliderReactivity, DragSliderAppearance, Define):
 	def definetext(self, (parent, text)):
 		raise RuntimeError, 'DragSlider.definetext() not supported'
 
 
 # Auxiliary class for PushButton incorporated in ComplexSlider
 #
-class _StepButton() = PushButton():
+class _StepButton(PushButton):
 	def define(self, parent):
 		self = PushButton.define(self, parent)
 		self.step = 0
@@ -130,7 +130,7 @@
 # A complex slider is an HSplit initialized to three buttons:
 # one to step down, a dragslider, and one to step up.
 #
-class ComplexSlider() = HSplit():
+class ComplexSlider(HSplit):
 	#
 	# Override Slider define() method
 	#
diff --git a/Lib/lib-stdwin/Soundogram.py b/Lib/lib-stdwin/Soundogram.py
index aa2edd1..a68d4b3 100644
--- a/Lib/lib-stdwin/Soundogram.py
+++ b/Lib/lib-stdwin/Soundogram.py
@@ -3,7 +3,7 @@
 import audio
 from Histogram import Histogram
 
-class Soundogram() = Histogram():
+class Soundogram(Histogram):
 	#
 	def define(self, (win, chunk)):
 		width, height = corner = win.getwinsize()
diff --git a/Lib/lib-stdwin/Split.py b/Lib/lib-stdwin/Split.py
index a5a6542..b169d72 100644
--- a/Lib/lib-stdwin/Split.py
+++ b/Lib/lib-stdwin/Split.py
@@ -8,7 +8,7 @@
 import rect
 from stdwinevents import *
 
-class Split():
+class Split:
 	#
 	# Calls from creator
 	# NB derived classes may add parameters to create()
diff --git a/Lib/lib-stdwin/StripChart.py b/Lib/lib-stdwin/StripChart.py
index 67d7de1..d58f835 100644
--- a/Lib/lib-stdwin/StripChart.py
+++ b/Lib/lib-stdwin/StripChart.py
@@ -6,7 +6,7 @@
 # A StripChart doesn't really look like a label but it needs a base class.
 # LabelAppearance allows it to be disabled and hilited.
 
-class StripChart() = LabelAppearance(), NoReactivity():
+class StripChart(LabelAppearance, NoReactivity):
 	#
 	def define(self, (parent, scale)):
 		self.parent = parent
diff --git a/Lib/lib-stdwin/VUMeter.py b/Lib/lib-stdwin/VUMeter.py
index 31fe155..ed9a473 100644
--- a/Lib/lib-stdwin/VUMeter.py
+++ b/Lib/lib-stdwin/VUMeter.py
@@ -6,7 +6,7 @@
 K = 1024
 Rates = [0, 32*K, 16*K, 8*K]
 
-class VUMeter() = StripChart():
+class VUMeter(StripChart):
 	#
 	# Override define() and timer() methods
 	#
diff --git a/Lib/lib-stdwin/WindowParent.py b/Lib/lib-stdwin/WindowParent.py
index 7b965f9..a0593c5 100644
--- a/Lib/lib-stdwin/WindowParent.py
+++ b/Lib/lib-stdwin/WindowParent.py
@@ -12,7 +12,7 @@
 
 Error = 'WindowParent.Error'	# Exception
 
-class WindowParent() = ManageOneChild():
+class WindowParent(ManageOneChild):
 	#
 	def create(self, (title, size)):
 		self.title = title
diff --git a/Lib/mutex.py b/Lib/mutex.py
index 38983fc..c939b1a 100644
--- a/Lib/mutex.py
+++ b/Lib/mutex.py
@@ -11,7 +11,7 @@
 # Of course, no multi-threading is implied -- hence the funny interface
 # for lock, where a function is called once the lock is aquired.
 #
-class mutex():
+class mutex:
 	#
 	# Create a new mutex -- initially unlocked
 	#
diff --git a/Lib/sched.py b/Lib/sched.py
index 42d5cee..e7d2b87 100644
--- a/Lib/sched.py
+++ b/Lib/sched.py
@@ -28,7 +28,7 @@
 # XXX instead of having to define a module or class just to hold
 # XXX the global state of your particular time and delay functtions.
 
-class scheduler():
+class scheduler:
 	#
 	# Initialize a new instance, passing the time and delay functions
 	#
diff --git a/Lib/stdwin/Abstract.py b/Lib/stdwin/Abstract.py
index 45d68ae..c6fe137 100755
--- a/Lib/stdwin/Abstract.py
+++ b/Lib/stdwin/Abstract.py
@@ -10,7 +10,7 @@
 # For historical reasons, button creation methods are called
 # define() while split creation methods are called create().
 
-class AbstractParent():
+class AbstractParent:
 	#
 	# Upcalls from child to parent
 	#
@@ -33,7 +33,7 @@
 	def scroll(self, (area, (dh, dv))): unimpl()
 	def settimer(self, itimer): unimpl()
 
-class AbstractChild():
+class AbstractChild:
 	#
 	# Downcalls from parent to child
 	#
@@ -59,5 +59,5 @@
 # Certain upcalls and downcalls can be handled transparently, but
 # for others (e.g., all geometry related calls) this is not possible.
 
-class AbstractSplit() = AbstractChild(), AbstractParent():
+class AbstractSplit(AbstractChild, AbstractParent):
 	pass
diff --git a/Lib/stdwin/BoxParent.py b/Lib/stdwin/BoxParent.py
index 7a0723a..d042e88 100755
--- a/Lib/stdwin/BoxParent.py
+++ b/Lib/stdwin/BoxParent.py
@@ -1,6 +1,6 @@
 from TransParent import TransParent
 
-class BoxParent() = TransParent():
+class BoxParent(TransParent):
 	#
 	def create(self, (parent, (dh, dv))):
 		self = TransParent.create(self, parent)
diff --git a/Lib/stdwin/Buttons.py b/Lib/stdwin/Buttons.py
index a218a99..949e128 100755
--- a/Lib/stdwin/Buttons.py
+++ b/Lib/stdwin/Buttons.py
@@ -22,7 +22,7 @@
 # disabled --> crossed out
 # hilited  --> inverted
 #
-class LabelAppearance():
+class LabelAppearance:
 	#
 	# Initialization
 	#
@@ -143,7 +143,7 @@
 
 # A Strut is a label with no width of its own.
 
-class StrutAppearance() = LabelAppearance():
+class StrutAppearance(LabelAppearance):
 	#
 	def getminsize(self, (m, (width, height))):
 		height = max(height, m.lineheight() + 6)
@@ -156,7 +156,7 @@
 # disabled --> crossed out
 # hilited  --> inverted
 #
-class ButtonAppearance() = LabelAppearance():
+class ButtonAppearance(LabelAppearance):
 	#
 	def drawpict(self, d):
 		d.box(_rect.inset(self.bounds, (1, 1)))
@@ -173,7 +173,7 @@
 # disabled --> whole button crossed out
 # hilited  --> box is inverted
 #
-class CheckAppearance() = LabelAppearance():
+class CheckAppearance(LabelAppearance):
 	#
 	def getminsize(self, (m, (width, height))):
 		minwidth = m.textwidth(self.text) + 6
@@ -207,7 +207,7 @@
 # disabled --> whole button crossed out
 # hilited  --> indicator is inverted
 #
-class RadioAppearance() = CheckAppearance():
+class RadioAppearance(CheckAppearance):
 	#
 	def drawpict(self, d):
 		(left, top), (right, bottom) = self.boxbounds
@@ -221,7 +221,7 @@
 
 # NoReactivity ignores mouse events.
 #
-class NoReactivity():
+class NoReactivity:
 	def init_reactivity(self): pass
 
 
@@ -237,7 +237,7 @@
 # There are usually extra conditions, e.g., hooks are only called
 # when the button is enabled, or active, or selected (on).
 #
-class BaseReactivity():
+class BaseReactivity:
 	#
 	def init_reactivity(self):
 		self.down_hook = self.move_hook = self.up_hook = \
@@ -279,7 +279,7 @@
 # ToggleReactivity acts like a simple pushbutton.
 # It toggles its hilite state on mouse down events.
 #
-class ToggleReactivity() = BaseReactivity():
+class ToggleReactivity(BaseReactivity):
 	#
 	def mouse_down(self, detail):
 		if self.enabled and self.mousetest(detail[_HV]):
@@ -308,7 +308,7 @@
 # TriggerReactivity acts like a fancy pushbutton.
 # It hilites itself while the mouse is down within its bounds.
 #
-class TriggerReactivity() = BaseReactivity():
+class TriggerReactivity(BaseReactivity):
 	#
 	def mouse_down(self, detail):
 		if self.enabled and self.mousetest(detail[_HV]):
@@ -336,7 +336,7 @@
 # CheckReactivity handles mouse events like TriggerReactivity,
 # It overrides the up_trigger method to flip its selected state.
 #
-class CheckReactivity() = TriggerReactivity():
+class CheckReactivity(TriggerReactivity):
 	#
 	def up_trigger(self):
 		self.select(not self.selected)
@@ -350,7 +350,7 @@
 # RadioReactivity turns itself on and the other buttons in its group
 # off when its up_trigger method is called.
 #
-class RadioReactivity() = TriggerReactivity():
+class RadioReactivity(TriggerReactivity):
 	#
 	def init_reactivity(self):
 		TriggerReactivity.init_reactivity(self)
@@ -370,7 +370,7 @@
 # Auxiliary class for 'define' method.
 # Call the initializers in the right order.
 #
-class Define():
+class Define:
 	#
 	def define(self, parent):
 		self.parent = parent
@@ -403,9 +403,9 @@
 
 # Ready-made button classes.
 #
-class Label() = NoReactivity(), LabelAppearance(), Define(): pass
-class Strut() = NoReactivity(), StrutAppearance(), Define(): pass
-class PushButton() = TriggerReactivity(), ButtonAppearance(), Define(): pass
-class CheckButton() = CheckReactivity(), CheckAppearance(), Define(): pass
-class RadioButton() = RadioReactivity(), RadioAppearance(), Define(): pass
-class ToggleButton() = ToggleReactivity(), ButtonAppearance(), Define(): pass
+class Label(NoReactivity, LabelAppearance, Define): pass
+class Strut(NoReactivity, StrutAppearance, Define): pass
+class PushButton(TriggerReactivity, ButtonAppearance, Define): pass
+class CheckButton(CheckReactivity, CheckAppearance, Define): pass
+class RadioButton(RadioReactivity, RadioAppearance, Define): pass
+class ToggleButton(ToggleReactivity, ButtonAppearance, Define): pass
diff --git a/Lib/stdwin/CSplit.py b/Lib/stdwin/CSplit.py
index a9d3556..5c57d90 100755
--- a/Lib/stdwin/CSplit.py
+++ b/Lib/stdwin/CSplit.py
@@ -7,7 +7,7 @@
 from math import pi, sin, cos
 from Split import Split
 
-class CSplit() = Split():
+class CSplit(Split):
 	#
 	def getminsize(self, (m, (width, height))):
 		# Since things look best if the children are spaced evenly
diff --git a/Lib/stdwin/FormSplit.py b/Lib/stdwin/FormSplit.py
index 521b9a8..16f3293 100755
--- a/Lib/stdwin/FormSplit.py
+++ b/Lib/stdwin/FormSplit.py
@@ -13,7 +13,7 @@
 
 from Split import Split
 
-class FormSplit() = Split():
+class FormSplit(Split):
 	#
 	def create(self, parent):
 		self.next_left = self.next_top = 0
diff --git a/Lib/stdwin/HVSplit.py b/Lib/stdwin/HVSplit.py
index c35ce4c..9790b7b 100755
--- a/Lib/stdwin/HVSplit.py
+++ b/Lib/stdwin/HVSplit.py
@@ -7,7 +7,7 @@
 
 from Split import Split
 
-class HVSplit() = Split():
+class HVSplit(Split):
 	#
 	def create(self, (parent, hv)):
 		# hv is 0 for HSplit, 1 for VSplit
@@ -53,10 +53,10 @@
 			# XXX too-small
 	#
 
-class HSplit() = HVSplit():
+class HSplit(HVSplit):
 	def create(self, parent):
 		return HVSplit.create(self, (parent, 0))
 
-class VSplit() = HVSplit():
+class VSplit(HVSplit):
 	def create(self, parent):
 		return HVSplit.create(self, (parent, 1))
diff --git a/Lib/stdwin/Histogram.py b/Lib/stdwin/Histogram.py
index 505bbaf..27ae673 100755
--- a/Lib/stdwin/Histogram.py
+++ b/Lib/stdwin/Histogram.py
@@ -4,7 +4,7 @@
 
 # A Histogram displays a histogram of numeric data.
 #
-class HistogramAppearance() = LabelAppearance(), Define():
+class HistogramAppearance(LabelAppearance, Define):
 	#
 	def define(self, parent):
 		Define.define(self, (parent, ''))
@@ -33,4 +33,4 @@
 			d.paint((h0, v0), (h1, v1))
 	#
 
-class Histogram() = NoReactivity(), HistogramAppearance(): pass
+class Histogram(NoReactivity, HistogramAppearance): pass
diff --git a/Lib/stdwin/Sliders.py b/Lib/stdwin/Sliders.py
index a07c3c4..0a709d6 100755
--- a/Lib/stdwin/Sliders.py
+++ b/Lib/stdwin/Sliders.py
@@ -22,7 +22,7 @@
 # It does not support any of the triggers or hooks defined by Buttons,
 # but defines its own setval_trigger and setval_hook.
 #
-class DragSliderReactivity() = BaseReactivity():
+class DragSliderReactivity(BaseReactivity):
 	#
 	def mouse_down(self, detail):
 		h, v = hv = detail[_HV]
@@ -43,7 +43,7 @@
 			self.active = 0
 	#
 
-class DragSliderAppearance() = ButtonAppearance():
+class DragSliderAppearance(ButtonAppearance):
 	#
 	# INVARIANTS maintained by the setval method:
 	#
@@ -94,14 +94,14 @@
 		self.settext(self.pretext + `self.val` + self.postext)
 	#
 
-class DragSlider() = DragSliderReactivity(), DragSliderAppearance(), Define():
+class DragSlider(DragSliderReactivity, DragSliderAppearance, Define):
 	def definetext(self, (parent, text)):
 		raise RuntimeError, 'DragSlider.definetext() not supported'
 
 
 # Auxiliary class for PushButton incorporated in ComplexSlider
 #
-class _StepButton() = PushButton():
+class _StepButton(PushButton):
 	def define(self, parent):
 		self = PushButton.define(self, parent)
 		self.step = 0
@@ -130,7 +130,7 @@
 # A complex slider is an HSplit initialized to three buttons:
 # one to step down, a dragslider, and one to step up.
 #
-class ComplexSlider() = HSplit():
+class ComplexSlider(HSplit):
 	#
 	# Override Slider define() method
 	#
diff --git a/Lib/stdwin/Soundogram.py b/Lib/stdwin/Soundogram.py
index aa2edd1..a68d4b3 100755
--- a/Lib/stdwin/Soundogram.py
+++ b/Lib/stdwin/Soundogram.py
@@ -3,7 +3,7 @@
 import audio
 from Histogram import Histogram
 
-class Soundogram() = Histogram():
+class Soundogram(Histogram):
 	#
 	def define(self, (win, chunk)):
 		width, height = corner = win.getwinsize()
diff --git a/Lib/stdwin/Split.py b/Lib/stdwin/Split.py
index a5a6542..b169d72 100755
--- a/Lib/stdwin/Split.py
+++ b/Lib/stdwin/Split.py
@@ -8,7 +8,7 @@
 import rect
 from stdwinevents import *
 
-class Split():
+class Split:
 	#
 	# Calls from creator
 	# NB derived classes may add parameters to create()
diff --git a/Lib/stdwin/StripChart.py b/Lib/stdwin/StripChart.py
index 67d7de1..d58f835 100755
--- a/Lib/stdwin/StripChart.py
+++ b/Lib/stdwin/StripChart.py
@@ -6,7 +6,7 @@
 # A StripChart doesn't really look like a label but it needs a base class.
 # LabelAppearance allows it to be disabled and hilited.
 
-class StripChart() = LabelAppearance(), NoReactivity():
+class StripChart(LabelAppearance, NoReactivity):
 	#
 	def define(self, (parent, scale)):
 		self.parent = parent
diff --git a/Lib/stdwin/VUMeter.py b/Lib/stdwin/VUMeter.py
index 31fe155..ed9a473 100755
--- a/Lib/stdwin/VUMeter.py
+++ b/Lib/stdwin/VUMeter.py
@@ -6,7 +6,7 @@
 K = 1024
 Rates = [0, 32*K, 16*K, 8*K]
 
-class VUMeter() = StripChart():
+class VUMeter(StripChart):
 	#
 	# Override define() and timer() methods
 	#
diff --git a/Lib/stdwin/WindowParent.py b/Lib/stdwin/WindowParent.py
index 7b965f9..a0593c5 100755
--- a/Lib/stdwin/WindowParent.py
+++ b/Lib/stdwin/WindowParent.py
@@ -12,7 +12,7 @@
 
 Error = 'WindowParent.Error'	# Exception
 
-class WindowParent() = ManageOneChild():
+class WindowParent(ManageOneChild):
 	#
 	def create(self, (title, size)):
 		self.title = title
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index 02e73e1..f4a9d4b 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -13,7 +13,7 @@
 
 # Kludge to hold mutable state
 
-class Struct(): pass
+class Struct: pass
 G = Struct()
 G.i = 0
 
