Initial commit. Class is complete but not fully documented and tested.