implement version 1 of fluent api