Added a few interfaces to try dependency injection