Observable arrays with live data binding, callbacks for data transformation, and callbacks for any modification