Add dependency injection, Need to update and include specs