Glad someone found my code useful. A few things that puzzle me though.
Why did you change the iSay function from an extender function?
cChar.iSay(what);
makes more sense than
iSay(cChar, what);
Also there're a few things you could do to clean up the code since some of my sloppiness remains but overall it probably wont matter.
All in all a job well done!