tests and docs and stuff