Repackaged a bunch, separating model from usage interfaces.