Wholesale changes to GUIs package which would actually reflect abstraction