added test interface for easy mocking