Change a lot. Add tests
3.0.0