[x] Consider dependency management for modules such as 'State' and all Utility modules and projects such as 'DataStorePlus' and 'TopbarPlus'
[x] Convert SharedModules to Shared - > Modules
[x] Setup 'Packages' folder within Client, Shared and Server
[x] Instead of 'shared' on the client, simply have everything within shared clone into both server and client
[x] Add TopbarPlus Icon to Client Packages
[x] update modules.Icon
[x] Add ZonePlus Zone to Shared Packages
[x] update modules.Zone
[x] Add DatastorePlus to Server Packages
[x] update modules.User
[x] update modules.PlayerStore
[x] update modules.SystemStore
[x] update modules.State
[x] update modules.Serializer
[x] Remove Utility and Projects entirely from Core
[x] Remove dependencies from DataStorePlus
[x] Have Maid and Signal as modules within UserStore (make sure to use the modified one without Promises)
[x] update UserStore
[x] update User
[x] update State
[x] have all modules reference parents correctly now that UserStore is parent
[x] Ensure Directory.merge works correctly
[x] module references must only be merged when they are required (easy loaded)
[x] to do this, check for corresponding module with Loader -> Extensions -> Core
[x] when merging models, what if two models have same name but completely different children which we dont want merging? maybe only merge folders and configuration instances
[x] Instead of cloning shared into server and client, setup an entirely new folder within ReplicatedStorage too called 'Shared'
[x] maybe consider a global main variable .shared in addition to .client and .server
[x] Completely test and fix every change to the framework
[x] client does not appear to be initating
[x] test new remote system completely
[x] there appears to be a problem with returning multiple values, possibly to do with Remote Object?
[x] look for all uses of invokeServer and invokeClient and ensure they work with promises (and potentially timeouts)
[x] consider changing modules.System/UserStore to modules.DataStores.System/UserStore
Remotes
[x] rename to ServerRemote and ClientRemote
[x] move to a shared package
[x] setup a server and client module called 'Remote' which requires and returns these
[x] merge RemoteController and RemoteService into their easy-loaded modules
[x] update all references of main.services.RemoteService:createRemote and main.services.RemoteController:getRemote to main.modules.Remote.new()
[x] make irrelevant methods _private
[x] for all asynchronous calls return a Promise
[x] for :invokeClient...
[x] introduce a timeout parameter
[x] if that player leaves the game, then cancel wait
modules.Icon
modules.Zone
modules.User
modules.PlayerStore
modules.SystemStore
modules.State
modules.Serializer
Directory.merge
works correctlymodules.System/UserStore
tomodules.DataStores.System/UserStore
Remotes
main.services.RemoteService:createRemote
andmain.services.RemoteController:getRemote
tomain.modules.Remote.new()