Refactored SelectQueryProvider to use interfaces instead of Maps