<div type="expander" caption="Very Very Fast">
<p>
Neo uses three (or more) web workers to parallel process app logic, DOM changes, and backend calls.
</p>
<p>
Furthermore, DOM changes are applied as _deltas_, which means updates are especially fast.
</p>
<p>
Another interesting benefit of the web worker approach is that Neo allows multi-window applications.
</p>
</div>

<div type="expander" caption="Declarative">
<p>
Most of the "code" you write is in the form of an object literal that describes what you're creating.
</p>
<p>
That declarative object literal is what's returned by `static getConfig()`.
</p>
</div>

<div type="expander" caption="Class Based">
<p>
The mjs class system is used, making it easy to override methods and extend classes. 
</p>
<p>
Any Neo class can be extended, making your code modular, reusable, and extensible.
</p>
</div>

<div type="expander" caption="Changing Content via Simple Assignments">
<p>
You change content by assigning values to properties, or by running methods.
</p>
<pre>
panel.title = 'My new title';
panel.add({
    ntype: button,
    text: 'Button
});
</pre>
</p>
</div>

<div type="expander" caption="Shared, Bindable, Data">
<p>Data can be shared within the view hierarchy via _view models_.</p>
<p>The view model data can also be _bound_ to properties.</p>
</pre>
</div>

<div type="expander" caption="Events">
<p>
All Neo objects are _observable_, and thus, can fire events.
</p>
<p>
Your code _listens_ to those events via `listeners` config. (You can also add listeners procedurally.)
</p>
</div>

<div type="expander" caption="Debugging">
<p>
It's easy to get component references in the browser's debugger. And since updating Neo classes is
as easy as assigning values to properties, you can easily inspect, update, debug, and otherwise
exercise your application when debugging.
</p>
</div>
