class StandardTransferer implements Transferer {

    @Override
    public void transfer(TransferConfig config, ParamRepository source, WritableParamRepository target) {
        long startTime = System.currentTimeMillis();
        logger.info("starting transfer from repository {} to repository {}", source.getClass().getSimpleName(), target.getClass().getSimpleName());

        SortedParameters sortedParameters = sorter.sort(source.listParameters(), target.listParameters());
        runTransferOperations(sortedParameters, config, source, target);

        long endTime = System.currentTimeMillis();
        logger.info("done transfering parameters, took {}ms", endTime - startTime);
    }

    public  StandardTransferer(ParameterSorter sorter, Map<TransferOperationType, TransferOperation> operations);

}