added `out_of` and `start_at`
added overriding