seperate density updating