include tests; needs more work and more coverage