Pulls more dir responsibility into WithDirectory