added the selected subset of methods. filled in most of the code. need to test.