implement dependency chaining