added dropWhile and takeWhile