fix(DSL): use chain-like DSL