using interface as field type rather than concrete implementation
removied `include` and `exclude` options; #231