bunch of stuff... not all tests done yet