Allocate Tasks
Decide how to allocate responsibilities
Client Side: UI & user input error checking
Server Side: shared resources, software that controls access to the resources
Multi-threading allows the user some GUI interaction event while a remote invocation is pending