ObservableArray now uses events rather than delegate