In the process of adding PDB support, I refactored a lot of the engine code, so the class interface for adding an engine is pretty simple, and there doesn't need to be much, if any, code duplication. I hope to add e-Sword format support at some point, and will probably clean up the code even more at that point. Obviously, the code to actually read any given format will vary in complexity. The format is the one used by Palm Bible+, symbianbible, etc. It's a pretty common format, though completely undocumented.