First commit. Already very usable.
Interface will be a nightmare however.