renamed rule factory to composition root