First pass at implementing Agent

  * Need to stop leaning on LockingTransaction