I have added a design document [here](https://github.com/LFITaskForce/engine/blob/master/design.md) to document our choices of interface and implementation. This issue can be used for discussions on the docucment.