add tests, fix issue where take() and skip() beform oddly for negative numbers