Refactored fluent api
added more test