properties and settings are defined in a separate class

query generation by a separate class

test cases