Simple examples, just for my consumption.
Move options into defaults for Interface.
Add more tests.
Handle string output in Compositor.
Use symbols for command names.
Swap order of arguments;

Allow Dummy interface to be used to lower barrier to entry.
Remove commented out code.
Refactoring for clarity;

- Interfaces should handle initial state, not application; therefore the Application doesn’t need to know about interfaces.
- In Interfaces, rather than return nil from #defined, return the default interface, otherwise all interfaces.
- Remove event_loop delegator from Interfaces.
- Event loop removed from interfaces to its own class.
- Add EventLoop class.
Add placeholder #start method.
Interface does not implement it’s own event loop.
Interfaces rethink;

- When defining interfaces we instantiate them immediately for access.
- Demote .default method to private.
- We can now access interfaces through .defined; creating them if necessary.
- Don’t return the hash of interfaces, this is leaking implementation to the rest of the system, inviting me to manually tamper with interfaces. Instead, use Interfaces module.
- Add methods for .input and .output; these will delegate to defined interface classes.
Delegate methods to Interface. Serves as documentation.
Add basic, manually tested event loop.
Wire up EventLoop.
Merge pull request #10 from gavinlaking/twerks

Twerks.