Most features added.  Not tested yet.