I've been working on InSim.NET 3.0, that I intend to use to clear up certain annoyances I have with the library currently.
The main issue is that, when InSim.NET 1.0 was written, it was intended to be used with InSimSniffer, which put certain constraints on its design. Firstly it had to match the original InSim protocol as closely as possible, this meant using Scawen's naming conventions and other stuff like that. The rest of the library, stuff what I made, was written to .NET naming conventions. This means the library currently mixes naming conventions, which is an annoyance to me. It also means that some things are harder to do that they could be, which has really come to forefront recently with values containing low/high bits, such as the RST Timing. So I first of all want to clear all that up and rewrite the InSim stuff to .NET conventions, and also add lots of stuff to make using the actual packets much simpler. Obviously this means breaking backwards compatibility.
I've also got very tried of having to laboriously type out the packet handlers each time, and while of course you can write a codesnippet to do it for you, they would work better as events. So the second thing I plan to do is to make each packet a proper .NET event.
Basically the plan is to make InSim.NET 3.0 a higher level library, where appropriate. I think a balance between low and high level, in terms of the API, is what I'm looking for these days.
I've already written most of this, and might try to release a beta/alpha version soon, but I just thought I'd mention it now so as no one is surprised when it comes out. I'm going to fork the CodePlex repository at some point (I'm just working off local repositories at the moment), so the existing codebase and releases will remain, so you won't need to upgrade if you don't want to.