1.  Make i/o loop engines interchangable at run time.
2.  Finish TODO list