Add event handling.  Pull demos to separate file.