: most implementation is the same as MSREncode class. The hope is that this class can eventually replace the use of MSREncode. The enum for the function comes from the MSR class.
: some of these are not logic errors if MSR data comes from user input files or if this interface is public. Alternatively, checks for these at the json parsing step would make these correctly logic errors.