Many changes, re-designed final clustering.