May be `offset` can also be moved to another abstract method.