documentation, preparing to re-write quite a bit.