moving some functionality to Interfaces templates in preparation of implementing mocking