implement take and drop