Use a single runtime Evolve into our own seperate runtime called by CLR Util -> Extention of System requires CLR KernelLib -> As CoreLib but has unsafe code in it. Called by trusted libs only. Is this needed ? We will leave as an unsafe version of Corelib for the moment and for things that should nvere be called by a user process ie Halt IF marked MakeVisible to then can be seen by System etc. System.Exception needs to be patched here. CoreLib.System -> Used by Trusted Libs , requires CLR/System so methods will be patched. ( eventually these classes will disapear as we build functionality in CoreLib) CoreLib ( Runtime) -> Used by System , Util , Trusted Libs and user apps , Does not use CLR! SO no exception , we provide some basic logging and diagnostics) . COntains system structures. Evolve to own run time which is called by Mono or .NET. CorelIb.System can use Corelib but not visa versa. Search for extern to find things that need to be patched Issues Assert -> Becomes check and Guard . Guard will call debugger , Check will log (and is used in checked builds) String ( used everywhere and system) Exceptions SystemLog - In CoreLib implements ISystemLogProvider and Corelib will patch. Best to use some interfaces here... Though they are not secure ( since user can implement ) Secure code checks should always check for a specific type.