diff --git a/source/application/api/use_case/inference_runner/include/MicroMutableAllOpsResolver.hpp b/source/application/api/use_case/inference_runner/include/MicroMutableAllOpsResolver.hpp
index 96ac28d..67a7c9e 100644
--- a/source/application/api/use_case/inference_runner/include/MicroMutableAllOpsResolver.hpp
+++ b/source/application/api/use_case/inference_runner/include/MicroMutableAllOpsResolver.hpp
@@ -14,122 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef INF_RUNNER_MICRO_MUTABLE_ALLOPS_RESOLVER_HPP
-#define INF_RUNNER_MICRO_MUTABLE_ALLOPS_RESOLVER_HPP
+#ifndef INF_RUNNER_MICRO_MUTABLE_ALL_OPS_RESOLVER_HPP
+#define INF_RUNNER_MICRO_MUTABLE_ALL_OPS_RESOLVER_HPP
 
 #include <tensorflow/lite/micro/micro_mutable_op_resolver.h>
 
-constexpr int kNumberOperators = 97;
-
 namespace arm {
 namespace app {
 
-    /* Create our own AllOpsResolver by adding all Ops to MicroMutableOpResolver. */
-    inline tflite::MicroMutableOpResolver<kNumberOperators> CreateAllOpsResolver() {
-        tflite::MicroMutableOpResolver<kNumberOperators> mutableAllOpResolver;
+    /* Maximum number of individual operations that can be enlisted. */
+    constexpr int kNumberOperators = 97;
 
-        mutableAllOpResolver.AddAbs();
-        mutableAllOpResolver.AddAdd();
-        mutableAllOpResolver.AddAddN();
-        mutableAllOpResolver.AddArgMax();
-        mutableAllOpResolver.AddArgMin();
-        mutableAllOpResolver.AddAssignVariable();
-        mutableAllOpResolver.AddAveragePool2D();
-        mutableAllOpResolver.AddBatchToSpaceNd();
-        mutableAllOpResolver.AddBroadcastArgs();
-        mutableAllOpResolver.AddBroadcastTo();
-        mutableAllOpResolver.AddCallOnce();
-        mutableAllOpResolver.AddCast();
-        mutableAllOpResolver.AddCeil();
-        mutableAllOpResolver.AddCircularBuffer();
-        mutableAllOpResolver.AddConcatenation();
-        mutableAllOpResolver.AddConv2D();
-        mutableAllOpResolver.AddCos();
-        mutableAllOpResolver.AddCumSum();
-        mutableAllOpResolver.AddDepthToSpace();
-        mutableAllOpResolver.AddDepthwiseConv2D();
-        mutableAllOpResolver.AddDequantize();
-        mutableAllOpResolver.AddDetectionPostprocess();
-        mutableAllOpResolver.AddDiv();
-        mutableAllOpResolver.AddElu();
-        mutableAllOpResolver.AddEqual();
-        mutableAllOpResolver.AddEthosU();
-        mutableAllOpResolver.AddExp();
-        mutableAllOpResolver.AddExpandDims();
-        mutableAllOpResolver.AddFill();
-        mutableAllOpResolver.AddFloor();
-        mutableAllOpResolver.AddFloorDiv();
-        mutableAllOpResolver.AddFloorMod();
-        mutableAllOpResolver.AddFullyConnected();
-        mutableAllOpResolver.AddGather();
-        mutableAllOpResolver.AddGatherNd();
-        mutableAllOpResolver.AddGreater();
-        mutableAllOpResolver.AddGreaterEqual();
-        mutableAllOpResolver.AddHardSwish();
-        mutableAllOpResolver.AddIf();
-        mutableAllOpResolver.AddL2Normalization();
-        mutableAllOpResolver.AddL2Pool2D();
-        mutableAllOpResolver.AddLeakyRelu();
-        mutableAllOpResolver.AddLess();
-        mutableAllOpResolver.AddLessEqual();
-        mutableAllOpResolver.AddLog();
-        mutableAllOpResolver.AddLogicalAnd();
-        mutableAllOpResolver.AddLogicalNot();
-        mutableAllOpResolver.AddLogicalOr();
-        mutableAllOpResolver.AddLogistic();
-        mutableAllOpResolver.AddLogSoftmax();
-        mutableAllOpResolver.AddMaxPool2D();
-        mutableAllOpResolver.AddMaximum();
-        mutableAllOpResolver.AddMean();
-        mutableAllOpResolver.AddMinimum();
-        mutableAllOpResolver.AddMirrorPad();
-        mutableAllOpResolver.AddMul();
-        mutableAllOpResolver.AddNeg();
-        mutableAllOpResolver.AddNotEqual();
-        mutableAllOpResolver.AddPack();
-        mutableAllOpResolver.AddPad();
-        mutableAllOpResolver.AddPadV2();
-        mutableAllOpResolver.AddPrelu();
-        mutableAllOpResolver.AddQuantize();
-        mutableAllOpResolver.AddReadVariable();
-        mutableAllOpResolver.AddReduceMax();
-        mutableAllOpResolver.AddRelu();
-        mutableAllOpResolver.AddRelu6();
-        mutableAllOpResolver.AddReshape();
-        mutableAllOpResolver.AddResizeBilinear();
-        mutableAllOpResolver.AddResizeNearestNeighbor();
-        mutableAllOpResolver.AddRound();
-        mutableAllOpResolver.AddRsqrt();
-        mutableAllOpResolver.AddSelectV2();
-        mutableAllOpResolver.AddShape();
-        mutableAllOpResolver.AddSin();
-        mutableAllOpResolver.AddSlice();
-        mutableAllOpResolver.AddSoftmax();
-        mutableAllOpResolver.AddSpaceToBatchNd();
-        mutableAllOpResolver.AddSpaceToDepth();
-        mutableAllOpResolver.AddSplit();
-        mutableAllOpResolver.AddSplitV();
-        mutableAllOpResolver.AddSqrt();
-        mutableAllOpResolver.AddSquare();
-        mutableAllOpResolver.AddSquaredDifference();
-        mutableAllOpResolver.AddSqueeze();
-        mutableAllOpResolver.AddStridedSlice();
-        mutableAllOpResolver.AddSub();
-        mutableAllOpResolver.AddSum();
-        mutableAllOpResolver.AddSvdf();
-        mutableAllOpResolver.AddTanh();
-        mutableAllOpResolver.AddTranspose();
-        mutableAllOpResolver.AddTransposeConv();
-        mutableAllOpResolver.AddUnidirectionalSequenceLSTM();
-        mutableAllOpResolver.AddUnpack();
-        mutableAllOpResolver.AddVarHandle();
-        mutableAllOpResolver.AddWhile();
-        mutableAllOpResolver.AddZerosLike();
-
-        return mutableAllOpResolver;
-    }
+    /**  An Op resolver containing all ops is no longer supplied with TFLite Micro
+     *   so we create our own instead for the generic inference runner.
+     *
+     * @return MicroMutableOpResolver containing all TFLite Micro Ops registered.
+     */
+    tflite::MicroMutableOpResolver<kNumberOperators> CreateAllOpsResolver();
 
 } /* namespace app */
 } /* namespace arm */
 
-#endif /* INF_RUNNER_MICRO_MUTABLE_ALLOPS_RESOLVER_HPP */
+#endif /* INF_RUNNER_MICRO_MUTABLE_ALL_OPS_RESOLVER_HPP */
