Major changes.  Added casts so subclass methods will be called.