C#Shell Credits
Ronnie Holm for lots of valuable comments and code corrections.