added needle functionality