Split out chaining, clean up extension interface