Reworked the API into a fluent API