You can include both DLLs - they have different names, so your users can easily choose between which sim to connect to. Most of the code to talk to the two dlls will be pretty similar, if not identical, so implementing that as an abstract base class makes a lot of sense. That’s essentially what I do in Plan-G.