docs + is finished + tests
merge with master