updated with minor changes, expanded breadth of testing etc