Better take / drop implementation