chain abstraction