Have the basic logic in place, but still working on the API and what hooks are needed.