breaking API changes and introduce simple tests
breaking API changes and introduce simple tests