Refactored to accept a PSR-3 logger