fluent api mark 1
work on approach 2