Issue #47: Use interfaces to easy DI and Unit testing