refactored MessageLoop and Canvas to form ShellForm