splitting `take` into `take` (merge-like) and `rebase`