completed testing and revision, ready for merge