What translation? I have to maintain and fix bugs in his code. It is all like that. Variables have wrong names, and their meaning changes al the time. Variable named "exchange" may actually mean "exchange_code", "exchange_id", "IExchange", "ExchangeConfig". "string exchange" may be used to keep "exchange_id", "exchange_code", and later on "exchange_name"... "instrument" may be of type "IInstrumentWrapper", "Ric", "Occ", "IDataAccessor", or whatever, and "accessor" means exactly the same... What about his unique approach to multi-threading? GUI thread: Click start background thread do something synchronous post to GUI Dispatcher wait until GUI is done do something synchronous post to GUI Dispatcher wait until GUI is done do something synchronous post to GUI Dispatcher wait until GUI is done do something Thread synchronization? Done using bunch of boolean flags, so it is one big race condition waiting to happen. There is no way to stop any background thread of course, so usually you have to use TaskManager to kill the application after you click "Close". Forget about memory leaks and such.