This week I continued refactoring, organizing all code into a single library, developing and documenting the Core API interface.
The interface is shaping quite nicely – all interactions are done via commands, which also serve as events if broadcast to all tasks. The host can subscribe to receive these events.
This design is extremely simple, yet very flexible, and it supports transparent API versioning for backwards compatibility. Similar to DirectX, only better
![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
In sim_start(), you tell which version of API your app is using and then the glue code converts all commands and events transparently between the host and the core.
This is important, because it allows applications to use the latest version of Simcoin core without the need to recompile.
Such interface also facilitates loose coupling and I like how it works now. Doing this was a good idea.