add optional logger parameter