going to attempt a rewrite from scratch, may be missing features on initial release if all goes well