Added documentation.
Changed the interface of LogicUnit to take and return T types. This way, the whole WorkUnit is hidden from the user-code.