How does your code branch on input data and decides which module to use?
I just recently had to do this and since I did not have a lot of modules and not too many input shapes I just made a router / dispatcher module that basically pattern-matches on the input and calls different module + function combo i.e.
module = Commands.detect_by_args(input)
module.perform(args)
Where Commands.detect_by_args/1 simply uses several pattern-matching function heads.


















