add chaining support to public api

current chaining support is inconsistent and confusing.  i've added chaining support to the current public api.