Fluent API #22
Some refactoring