rename bind to chain, since bind is an overloaded term in JS