add more methods, tests
add documentation, more functions