adding data clustering with tests