allow overriding learnJson