Re-work the API a bit.