api operations and dom manipulation are decoupled