add takeWhile