First stab at style consistency - prefer native type aliases, always use curly braces for control flow blocks, single statement per line, make access levels explicit, and prefix interface names with I
Replacing use of nonstandard custom exceptions with equivalent standard library exceptions.
Using a private static lock target rather than a public Type lock target for safer singleton instantiation