#6: chainable API