refactoring; adopting fluent style api