mostly done with crowding distance, still need to thoroughly debug and generalize