added clustering algorithms and visualisation