added tests and other ablilities