ScriptHost is collocated with ScriptRuntime in the same app-domain. The host can implement a derived class to consume some notifications and/or customize operations like TryGetSourceUnit,ResolveSourceUnit, etc. The areguments to the the constructor of the derived class are specified in ScriptRuntimeSetup instance that enters ScriptRuntime initialization. If the host is remote with respect to DLR (i.e. also with respect to ScriptHost) and needs to access objects living in its app-domain it can pass MarshalByRefObject as an argument to its ScriptHost subclass constructor.