#28 minor refactoring
#28 use factories for workspace and main window controller