diff --git a/docs/01_01_parsers.dox b/docs/01_01_parsers.dox
index 20d0ced..94386f1 100644
--- a/docs/01_01_parsers.dox
+++ b/docs/01_01_parsers.dox
@@ -12,21 +12,26 @@
 Execute models from different machine learning platforms efficiently with our parsers. Simply choose a parser according
 to the model you want to run e.g. If you've got a model in tensorflow format (<model_name>.pb) use our tensorflow-parser.
 
-If you would like to run a Tensorflow Lite (TfLite) model you probably also want to take a look at our [TfLite delegate](delegate).
+If you would like to run a Tensorflow Lite (TfLite) model you probably also want to take a look at our @ref delegate.
 
 All parsers are written in C++ but it is also possible to use them in python. For more information on our python
-bindings take a look into the [PyArmNN](pyarmnn) section.
+bindings take a look into the @ref md_python_pyarmnn_README section.
 
-Fallback mechanism
 
-@section S4_caffe_parser ArmNN Caffe Parser
+
+@section S4_caffe_parser Arm NN Caffe Parser
 
 `armnnCaffeParser` is a library for loading neural networks defined in Caffe protobuf files into the Arm NN runtime.
 
+Please note that certain deprecated Caffe features are not supported by the armnnCaffeParser. If you think that Arm NN
+should be able to load your model according to the list of supported layers, but you are getting strange error
+messages, then try upgrading your model to the latest format using Caffe, either by saving it to a new file or using
+the upgrade utilities in `caffe/tools`.
+
 ## Caffe layers supported by the Arm NN SDK
 This reference guide provides a list of Caffe layers the Arm NN SDK currently supports.
 
-## Although some other neural networks might work, Arm tests the Arm NN SDK with Caffe implementations of the following neural networks:
+### Although some other neural networks might work, Arm tests the Arm NN SDK with Caffe implementations of the following neural networks:
 
 - AlexNet.
 - Cifar10.
@@ -38,20 +43,23 @@
 - MobileNetv1.
 - SqueezeNet v1.0 and SqueezeNet v1.1
 
-## The Arm NN SDK supports the following machine learning layers for Caffe networks:
+### The Arm NN SDK supports the following machine learning layers for Caffe networks:
 
+- Argmax, excluding the top_k and out_max_val parameters.
 - BatchNorm, in inference mode.
-- Convolution, excluding the Dilation Size, Weight Filler, Bias Filler, Engine, Force nd_im2col, and Axis parameters.
+- Convolution, excluding Weight Filler, Bias Filler, Engine, Force nd_im2col, and Axis parameters.
+- Deconvolution, excluding the Dilation Size, Weight Filler, Bias Filler, Engine, Force nd_im2col, and Axis parameters.
+
   Caffe doesn't support depthwise convolution, the equivalent layer is implemented through the notion of groups. ArmNN supports groups this way:
   - when group=1, it is a normal conv2d
   - when group=#input_channels, we can replace it by a depthwise convolution
   - when group>1 && group<#input_channels, we need to split the input into the given number of groups, apply a separate convolution and then merge the results
 - Concat, along the channel dimension only.
 - Dropout, in inference mode.
-- Element wise, excluding the coefficient parameter.
+- Eltwise, excluding the coeff parameter.
 - Inner Product, excluding the Weight Filler, Bias Filler, Engine, and Axis parameters.
 - Input.
-- Local Response Normalisation (LRN), excluding the Engine parameter.
+- LRN, excluding the Engine parameter.
 - Pooling, excluding the Stochastic Pooling and Engine parameters.
 - ReLU.
 - Scale.
@@ -60,9 +68,11 @@
 
 More machine learning layers will be supported in future releases.
 
-Please note that certain deprecated Caffe features are not supported by the armnnCaffeParser. If you think that Arm NN should be able to load your model according to the list of supported layers, but you are getting strange error messages, then try upgrading your model to the latest format using Caffe, either by saving it to a new file or using the upgrade utilities in `caffe/tools`.
 <br/><br/><br/><br/>
 
+
+
+
 @section S5_onnx_parser ArmNN Onnx Parser
 
 `armnnOnnxParser` is a library for loading neural networks defined in ONNX protobuf files into the Arm NN runtime.
@@ -73,7 +83,7 @@
 
 The Arm NN SDK ONNX parser currently only supports fp32 operators.
 
-## Fully supported
+### Fully supported
 
 - Add
   - See the ONNX [Add documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Add) for more information
@@ -112,7 +122,7 @@
   - See the ONNX [Tanh documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Tanh) for more information.
 
 
-## Partially supported
+### Partially supported
 
 - Conv
   - The parser only supports 2D convolutions with a dilation rate of [1, 1] and group = 1 or group = #Nb_of_channel (depthwise convolution)
@@ -125,12 +135,15 @@
 ## Tested networks
 
 Arm tested these operators with the following ONNX fp32 neural networks:
-- Simple MNIST. See the ONNX [MNIST documentation](https://github.com/onnx/models/tree/master/mnist) for more information.
-- Mobilenet_v2. See the ONNX [MobileNet documentation](https://github.com/onnx/models/tree/master/models/image_classification/mobilenet) for more information.
+- Mobilenet_v2. See the ONNX [MobileNet documentation](https://github.com/onnx/models/tree/master/vision/classification/mobilenet) for more information.
+- Simple MNIST. This is no longer directly documented by ONNX. The model and test data may be downloaded [from the ONNX model zoo](https://onnxzoo.blob.core.windows.net/models/opset_8/mnist/mnist.tar.gz).
 
 More machine learning operators will be supported in future releases.
 <br/><br/><br/><br/>
 
+
+
+
 @section S6_tf_lite_parser ArmNN Tf Lite Parser
 
 `armnnTfLiteParser` is a library for loading neural networks defined by TensorFlow Lite FlatBuffers files
@@ -140,8 +153,7 @@
 
 This reference guide provides a list of TensorFlow Lite operators the Arm NN SDK currently supports.
 
-## Fully supported
-
+### Fully supported
 The Arm NN SDK TensorFlow Lite parser currently supports the following operators:
 
 - ADD
@@ -149,19 +161,23 @@
 - BATCH_TO_SPACE
 - CONCATENATION, Supported Fused Activation: RELU , RELU6 , TANH, NONE
 - CONV_2D, Supported Fused Activation: RELU , RELU6 , TANH, NONE
+- DEPTH_TO_SPACE
 - DEPTHWISE_CONV_2D, Supported Fused Activation: RELU , RELU6 , TANH, NONE
 - DEQUANTIZE
 - DIV
+- ELU
 - EXP
 - FULLY_CONNECTED, Supported Fused Activation: RELU , RELU6 , TANH, NONE
+- GATHER
+- HARD_SWISH
+- LEAKY_RELU
 - LOGISTIC
 - L2_NORMALIZATION
-- LEAKY_RELU
 - MAX_POOL_2D, Supported Fused Activation: RELU , RELU6 , TANH, NONE
 - MAXIMUM
 - MEAN
 - MINIMUM
-- MUL
+- MU
 - NEG
 - PACK
 - PAD
@@ -184,12 +200,10 @@
 - TRANSPOSE_CONV
 - UNPACK
 
-## Custom Operator
-
+### Custom Operator
 - TFLite_Detection_PostProcess
 
 ## Tested networks
-
 Arm tested these operators with the following TensorFlow Lite neural network:
 - [Quantized MobileNet](http://download.tensorflow.org/models/mobilenet_v1_2018_02_22/mobilenet_v1_1.0_224_quant.tgz)
 - [Quantized SSD MobileNet](http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18.tar.gz)
@@ -208,6 +222,9 @@
 More machine learning operators will be supported in future releases.
 <br/><br/><br/><br/>
 
+
+
+
 @section S7_tf_parser ArmNN Tensorflow Parser
 
 `armnnTfParser` is a library for loading neural networks defined by TensorFlow protobuf files into the Arm NN runtime.
@@ -218,7 +235,7 @@
 
 The Arm NN SDK TensorFlow parser currently only supports fp32 operators.
 
-## Fully supported
+### Fully supported
 
 - avg_pool
   - See the TensorFlow [avg_pool documentation](https://www.tensorflow.org/api_docs/python/tf/nn/avg_pool) for more information.
@@ -259,7 +276,7 @@
 - transpose
   - See the TensorFlow [transpose documentation](https://www.tensorflow.org/api_docs/python/tf/transpose) for more information.
 
-## Partially supported
+### Partially supported
 
 - add
   - The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of scalars and 1D tensors. See the TensorFlow [add operator documentation](https://www.tensorflow.org/api_docs/python/tf/add) for more information.
@@ -316,10 +333,8 @@
 - Lenet
 - mobilenet_v1_1.0_224. The Arm NN SDK only supports the non-quantized version of the network. See the [MobileNet_v1 documentation](https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md) for more information on quantized networks.
 - inception_v3. The Arm NN SDK only supports the official inception_v3 transformed model. See the TensorFlow documentation on [preparing models for mobile deployment](https://www.tensorflow.org/mobile/prepare_models) for more information on how to transform the inception_v3 network.
-
-Using these datasets:
-- Cifar10
 - Simple MNIST. For more information check out the [tutorial](https://developer.arm.com/technologies/machine-learning-on-arm/developer-material/how-to-guides/deploying-a-tensorflow-mnist-model-on-arm-nn) on the Arm Developer portal.
+- ResNet v2 50 implementation from the [TF Slim model zoo](https://github.com/tensorflow/models/tree/master/research/slim)
 
 More machine learning operators will be supported in future releases.
 
diff --git a/src/armnnCaffeParser/CaffeSupport.md b/src/armnnCaffeParser/CaffeSupport.md
deleted file mode 100644
index 3501a78..0000000
--- a/src/armnnCaffeParser/CaffeSupport.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Caffe layers supported by the Arm NN SDK
-This reference guide provides a list of Caffe layers the Arm NN SDK currently supports.
-
-Although some other neural networks might work, Arm tests the Arm NN SDK with Caffe implementations of the following neural networks: 
-
-- AlexNet.
-- Cifar10.
-- Inception-BN.
-- Resnet_50, Resnet_101 and Resnet_152.
-- VGG_CNN_S, VGG_16 and VGG_19.
-- Yolov1_tiny.
-- Lenet.
-- MobileNetv1.
-- SqueezeNet v1.0 and SqueezeNet v1.1
-
-The Arm NN SDK supports the following machine learning layers for Caffe networks:
-
-
-- Argmax, excluding the top_k and out_max_val parameters.
-- BatchNorm, in inference mode.
-- Convolution, excluding Weight Filler, Bias Filler, Engine, Force nd_im2col, and Axis parameters.
-- Deconvolution, excluding the Dilation Size, Weight Filler, Bias Filler, Engine, Force nd_im2col, and Axis parameters.
-
-  Caffe doesn't support depthwise convolution, the equivalent layer is implemented through the notion of groups. ArmNN supports groups this way:
-  - when group=1, it is a normal conv2d
-  - when group=#input_channels, we can replace it by a depthwise convolution
-  - when group>1 && group<#input_channels, we need to split the input into the given number of groups, apply a separate convolution and then merge the results
-- Concat, along the channel dimension only.
-- Dropout, in inference mode.
-- Eltwise, excluding the coeff parameter.
-- Inner Product, excluding the Weight Filler, Bias Filler, Engine, and Axis parameters.
-- Input.
-- LRN, excluding the Engine parameter.
-- Pooling, excluding the Stochastic Pooling and Engine parameters.
-- ReLU.
-- Scale.
-- Softmax, excluding the Axis and Engine parameters.
-- Split.
-
-More machine learning layers will be supported in future releases.
diff --git a/src/armnnCaffeParser/README.md b/src/armnnCaffeParser/README.md
index 63e856d..17dbe44 100644
--- a/src/armnnCaffeParser/README.md
+++ b/src/armnnCaffeParser/README.md
@@ -2,6 +2,6 @@
 
 `armnnCaffeParser` is a library for loading neural networks defined in Caffe protobuf files into the Arm NN runtime.
 
-For more information about the Caffe layers that are supported, and the networks that have been tested, see [CaffeSupport.md](./CaffeSupport.md).
-
-Please note that certain deprecated Caffe features are not supported by the armnnCaffeParser. If you think that Arm NN should be able to load your model according to the list of supported layers in [CaffeSupport.md](./CaffeSupport.md), but you are getting strange error messages, then try upgrading your model to the latest format using Caffe, either by saving it to a new file or using the upgrade utilities in `caffe/tools`.
+For more information, a list of supported Caffe layers, and the networks that have been tested, 
+please visit "Software Tools" -> "Parsers" -> "Arm NN Caffe Parser" in our doxygen documentation that can be found in 
+the [wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) of our github repository.
diff --git a/src/armnnConverter/README.md b/src/armnnConverter/README.md
index e5892ac..afff3c9 100644
--- a/src/armnnConverter/README.md
+++ b/src/armnnConverter/README.md
@@ -4,6 +4,6 @@
 Currently the program supports models in Caffe, Onnx, Tensorflow Protocol Buffers and Tensorflow Lite FlatBuffers formats. 
 Run the program with no arguments to see command-line help.
 
-For more information about the layers that are supported, see [TensorFlowSupport.md](../armnnTfParser/TensorFlowSupport.md),
-[TensorFlowLiteSupport.md](../armnnTfLiteParser/TensorFlowLiteSupport.md),
-[OnnxSupport.md](../armnnOnnxParser/OnnxSupport.md), [CaffeSupport.md](../armnnCaffeParser/CaffeSupport.md).
+For more information, a list of supported layers, and the networks that have been tested,
+please visit "Software Tools" -> "Converter" in our doxygen documentation that can be found in
+the [wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) of our github repository.
diff --git a/src/armnnDeserializer/README.md b/src/armnnDeserializer/README.md
index fa76a6d..b43f15d 100644
--- a/src/armnnDeserializer/README.md
+++ b/src/armnnDeserializer/README.md
@@ -4,5 +4,5 @@
 into the Arm NN runtime.
 
 For more information about the layers that are supported, and the networks that have been tested,
-take a look into our doxygen documentation which can be found in the [wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) 
-of our github repository.
\ No newline at end of file
+take a look at "Software Tools" -> "Deserializer" in our doxygen documentation which can be found in 
+the [wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) of our github repository.
\ No newline at end of file
diff --git a/src/armnnOnnxParser/OnnxSupport.md b/src/armnnOnnxParser/OnnxSupport.md
deleted file mode 100644
index 051e2c9..0000000
--- a/src/armnnOnnxParser/OnnxSupport.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# ONNX operators that the Arm NN SDK supports
-
-This reference guide provides a list of ONNX operators the Arm NN SDK currently supports.
-
-The Arm NN SDK ONNX parser currently only supports fp32 operators.
-
-## Fully supported
-
-**Add**
-
-See the ONNX [Add documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Add) for more information
-
-**AveragePool**
-
-See the ONNX [AveragePool documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#AveragePool) for more information.
-
-**Constant**
-
-See the ONNX [Constant documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) for more information.
-
-**Clip**
-
-See the ONNX [Clip documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Clip) for more information.
-
-**Flatten**
-
-See the ONNX [Flatten documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Flatten) for more information.
-
-**GlobalAveragePool**
-
-See the ONNX [GlobalAveragePool documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#GlobalAveragePool) for more information.
-
-**LeakyRelu**
-
-See the ONNX [LeakyRelu documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#LeakyRelu) for more information.
-
-
-**MaxPool**
-
-See the ONNX [max_pool documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#MaxPool) for more information.
-
-**Relu**
-
-See the ONNX [Relu documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Relu) for more information.
-
-**Reshape**
-
-See the ONNX [Reshape documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Reshape) for more information.
-
-**Sigmoid**
-
-See the ONNX [Sigmoid documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sigmoid) for more information.
-
-
-**Tanh**
-
-See the ONNX [Tanh documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Tanh) for more information.
-
-
-## Partially supported
-
-**Conv**
-
-The parser only supports 2D convolutions with a dilation rate of [1, 1] and group = 1 or group = #Nb_of_channel (depthwise convolution)
-See the ONNX [Conv documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Conv) for more information.
-
-**BatchNormalization**
-
-The parser does not support training mode. See the ONNX [BatchNormalization documentation](https://github.com/onnx/onnx/blob/master/docs/Operators.md#BatchNormalization) for more information.
-
-**MatMul**
-
-The parser only supports constant weights in a fully connected layer.
-
-## Tested networks
-
-Arm tested these operators with the following ONNX fp32 neural networks:
-
-* Mobilenet_v2. See the ONNX [MobileNet documentation](https://github.com/onnx/models/tree/master/vision/classification/mobilenet) for more information.
-
-* Simple MNIST. This is no longer directly documented by ONNX. The model and test data may be downloaded [from the ONNX model zoo](https://onnxzoo.blob.core.windows.net/models/opset_8/mnist/mnist.tar.gz).
-
-More machine learning operators will be supported in future releases as time allows. If you require specific operator support contribution are welcome.
diff --git a/src/armnnOnnxParser/README.md b/src/armnnOnnxParser/README.md
index cd30d39..6ba3fa2 100644
--- a/src/armnnOnnxParser/README.md
+++ b/src/armnnOnnxParser/README.md
@@ -2,4 +2,6 @@
 
 `armnnOnnxParser` is a library for loading neural networks defined in ONNX protobuf files into the Arm NN runtime.
 
-For more information about the ONNX layers that are supported, and the networks that have been tested, see [OnnxSupport.md](./OnnxSupport.md).
+For more information, a list of supported ONNX layers, and the networks that have been tested,
+please visit "Software Tools" -> "Parsers" -> "Arm NN ONNX Parser" in our doxygen documentation that can be found in
+the [wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) of our github repository.
\ No newline at end of file
diff --git a/src/armnnSerializer/README.md b/src/armnnSerializer/README.md
index 79ab2e2..e6874f4 100644
--- a/src/armnnSerializer/README.md
+++ b/src/armnnSerializer/README.md
@@ -3,5 +3,5 @@
 The `armnnSerializer` is a library for serializing an Arm NN network to a stream.
 
 For more information about the layers that are supported, and the networks that have been tested,
-take a look into our doxygen documentation which can be found in the [wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) 
-of our github repository.
\ No newline at end of file
+take a look at "Software Tools" -> "Serializer" in our doxygen documentation which can be found in the 
+[wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) of our github repository.
\ No newline at end of file
diff --git a/src/armnnTfLiteParser/README.md b/src/armnnTfLiteParser/README.md
index 5e76a9c..b2b1ac0 100644
--- a/src/armnnTfLiteParser/README.md
+++ b/src/armnnTfLiteParser/README.md
@@ -3,5 +3,6 @@
 `armnnTfLiteParser` is a library for loading neural networks defined by TensorFlow Lite FlatBuffers files
 into the Arm NN runtime.
 
-For more information about the TensorFlow Lite operators that are supported, and the networks that have been tested,
-see [TensorFlowLiteSupport.md](./TensorFlowLiteSupport.md).
+For more information, a list of supported TensorFlow Lite layers, and the networks that have been tested,
+please visit "Software Tools" -> "Parsers" -> "Arm NN Tf Lite Parser" in our doxygen documentation that can be found in
+the [wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) of our github repository.
diff --git a/src/armnnTfLiteParser/TensorFlowLiteSupport.md b/src/armnnTfLiteParser/TensorFlowLiteSupport.md
deleted file mode 100644
index 16663c9..0000000
--- a/src/armnnTfLiteParser/TensorFlowLiteSupport.md
+++ /dev/null
@@ -1,129 +0,0 @@
-# TensorFlow Lite operators that the Arm NN SDK supports
-
-This reference guide provides a list of TensorFlow Lite operators the Arm NN SDK currently supports.
-
-## Fully supported
-
-The Arm NN SDK TensorFlow Lite parser currently supports the following operators:
-
-* ADD
-
-* AVERAGE_POOL_2D, Supported Fused Activation: RELU , RELU6 , TANH, NONE
-
-* BATCH_TO_SPACE
-
-* CONCATENATION, Supported Fused Activation: RELU , RELU6 , TANH, NONE
-
-* CONV_2D, Supported Fused Activation: RELU , RELU6 , TANH, NONE
-
-* DEPTH_TO_SPACE
-
-* DEPTHWISE_CONV_2D, Supported Fused Activation: RELU , RELU6 , TANH, NONE
-
-* DEQUANTIZE
-
-* DIV
-
-* ELU
-
-* EXP
-
-* FULLY_CONNECTED, Supported Fused Activation: RELU , RELU6 , TANH, NONE
-
-* GATHER
-
-* HARD_SWISH
-
-* LEAKY_RELU
-
-* LOGISTIC
-
-* L2_NORMALIZATION
-
-* MAX_POOL_2D, Supported Fused Activation: RELU , RELU6 , TANH, NONE
-
-* MAXIMUM
-
-* MEAN
-
-* MINIMUM
-
-* MUL
-
-* NEG
-
-* PACK
-
-* PAD
-
-* QUANTIZE
-
-* RELU
-
-* RELU6
-
-* RESHAPE
-
-* RESIZE_BILINEAR
-
-* RESIZE_NEAREST_NEIGHBOR
-
-* SLICE
-
-* SOFTMAX
-
-* SPACE_TO_BATCH
-
-* SPLIT
-
-* SPLIT_V
-
-* SQUEEZE
-
-* STRIDED_SLICE
-
-* SUB
-
-* TANH
-
-* TRANSPOSE
-
-* TRANSPOSE_CONV
-
-* UNPACK
-
-## Custom Operator
-
-* TFLite_Detection_PostProcess
-
-## Tested networks
-
-Arm tested these operators with the following TensorFlow Lite neural network:
-
-* [Quantized MobileNet](http://download.tensorflow.org/models/mobilenet_v1_2018_02_22/mobilenet_v1_1.0_224_quant.tgz)
-
-* [Quantized SSD MobileNet](http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18.tar.gz)
-
-* DeepSpeech v1 converted from [TensorFlow model](https://github.com/mozilla/DeepSpeech/releases/tag/v0.4.1)
-
-* DeepSpeaker
-
-* [DeepLab v3+](https://www.tensorflow.org/lite/models/segmentation/overview)
-
-* FSRCNN
-
-* EfficientNet-lite
-
-* RDN converted from [TensorFlow model](https://github.com/hengchuan/RDN-TensorFlow)
-
-* Quantized RDN (CpuRef)
-
-* [Quantized Inception v3](http://download.tensorflow.org/models/tflite_11_05_08/inception_v3_quant.tgz)
-
-* [Quantized Inception v4](http://download.tensorflow.org/models/inception_v4_299_quant_20181026.tgz) (CpuRef)
-
-* Quantized ResNet v2 50 (CpuRef)
-
-* Quantized Yolo v3 (CpuRef)
-
-More machine learning operators will be supported in future releases.
diff --git a/src/armnnTfParser/README.md b/src/armnnTfParser/README.md
index dc7def8..33e1999 100644
--- a/src/armnnTfParser/README.md
+++ b/src/armnnTfParser/README.md
@@ -2,4 +2,6 @@
 
 `armnnTfParser` is a library for loading neural networks defined by TensorFlow protobuf files into the Arm NN runtime.
 
-For more information about the TensorFlow operators that are supported, and the networks that have been tested, see [TensorFlowSupport.md](./TensorFlowSupport.md).
+For more information, a list of supported TensorFlow layers, and the networks that have been tested,
+please visit "Software Tools" -> "Parsers" -> "Arm NN TensorFlow Parser" in our doxygen documentation that can be found in
+the [wiki section](https://github.com/ARM-software/armnn/wiki/Documentation) of our github repository.
\ No newline at end of file
diff --git a/src/armnnTfParser/TensorFlowSupport.md b/src/armnnTfParser/TensorFlowSupport.md
deleted file mode 100644
index 2dc54b5..0000000
--- a/src/armnnTfParser/TensorFlowSupport.md
+++ /dev/null
@@ -1,194 +0,0 @@
-# TensorFlow operators that the Arm NN SDK supports
-
-This reference guide provides a list of TensorFlow operators the Arm NN SDK currently supports.
-
-The Arm NN SDK TensorFlow parser currently only supports fp32 operators.
-
-## Fully supported
-
-**avg_pool**
-
-See the TensorFlow [avg_pool documentation](https://www.tensorflow.org/api_docs/python/tf/nn/avg_pool) for more information.
-
-**bias_add**
-
-See the TensorFlow [bias_add documentation](https://www.tensorflow.org/api_docs/python/tf/nn/bias_add) for more information.
-
-**conv2d**
-
-See the TensorFlow [conv2d documentation](https://www.tensorflow.org/api_docs/python/tf/nn/conv2d) for more information.
-
-**expand_dims**
-
-See the TensorFlow [expand_dims documentation](https://www.tensorflow.org/api_docs/python/tf/expand_dims) for more information.
-
-**gather**
-
-See the TensorFlow [gather documentation](https://www.tensorflow.org/api_docs/python/tf/gather) for more information.
-
-**identity**
-
-See the TensorFlow [identity documentation](https://www.tensorflow.org/api_docs/python/tf/identity) for more information.
-
-**local_response_normalization**
-
-See the TensorFlow [local_response_normalization documentation](https://www.tensorflow.org/api_docs/python/tf/nn/local_response_normalization)  for more information.
-
-**max_pool**
-
-See the TensorFlow [max_pool documentation](https://www.tensorflow.org/api_docs/python/tf/nn/max_pool) for more information.
-
-**placeholder**
-
-See the TensorFlow [placeholder documentation](https://www.tensorflow.org/api_docs/python/tf/placeholder) for more information.
-
-**reduce_mean**
-
-See the TensorFlow [reduce_mean documentation](https://www.tensorflow.org/api_docs/python/tf/reduce_mean) for more information.
-
-**relu**
-
-See the TensorFlow [relu documentation](https://www.tensorflow.org/api_docs/python/tf/nn/relu) for more information.
-
-**relu6**
-
-See the TensorFlow [relu6 documentation](https://www.tensorflow.org/api_docs/python/tf/nn/relu6) for more information.
-
-**rsqrt**
-
-See the TensorFlow [rsqrt documentation](https://www.tensorflow.org/api_docs/python/tf/math/rsqrt) for more information.
-
-**shape**
-
-See the TensorFlow [shape documentation](https://www.tensorflow.org/api_docs/python/tf/shape) for more information.
-
-**sigmoid**
-
-See the TensorFlow [sigmoid documentation](https://www.tensorflow.org/api_docs/python/tf/sigmoid) for more information.
-
-**softplus**
-
-See the TensorFlow [softplus documentation](https://www.tensorflow.org/api_docs/python/tf/nn/softplus) for more information.
-
-**squeeze**
-
-See the TensorFlow [squeeze documentation](https://www.tensorflow.org/api_docs/python/tf/squeeze) for more information.
-
-**tanh**
-
-See the TensorFlow [tanh documentation](https://www.tensorflow.org/api_docs/python/tf/tanh) for more information.
-
-**transpose**
-
-See the TensorFlow [transpose documentation](https://www.tensorflow.org/api_docs/python/tf/transpose) for more information.
-
-## Partially supported
-
-**add**
-
-The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of scalars and 1D tensors. See the TensorFlow [add operator documentation](https://www.tensorflow.org/api_docs/python/tf/add) for more information.
-
-**add_n**
-
-The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of scalars and 1D tensors. See the TensorFlow [add operator documentation](https://www.tensorflow.org/api_docs/python/tf/add_n) for more information.
-
-**concat**
-
-Arm NN supports concatenation along the channel dimension for data formats NHWC and NCHW.
-
-**constant**
-
-The parser does not support the optional `shape` argument. It always infers the shape of the output tensor from `value`. See the TensorFlow [constant documentation](https://www.tensorflow.org/api_docs/python/tf/constant) for further information.
-
-**depthwise_conv2d_native**
-
-The parser only supports a dilation rate of (1,1,1,1). See the TensorFlow [depthwise_conv2d_native documentation](https://www.tensorflow.org/api_docs/python/tf/nn/depthwise_conv2d_native) for more information.
-
-**equal**
-
-The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of 4D and 1D tensors. See the TensorFlow [equal operator documentation](https://www.tensorflow.org/api_docs/python/tf/math/equal) for more information.
-
-**fused_batch_norm**
-
-The parser does not support training outputs. See the TensorFlow [fused_batch_norm documentation](https://www.tensorflow.org/api_docs/python/tf/nn/fused_batch_norm) for more information.
-
-**greater**
-
-The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of 4D and 1D tensors. See the TensorFlow [greater operator documentation](https://www.tensorflow.org/api_docs/python/tf/math/greater) for more information.
-
-**matmul**
-
-The parser only supports constant weights in a fully connected layer. See the TensorFlow [matmul documentation](https://www.tensorflow.org/api_docs/python/tf/matmul) for more information.
-
-**maximum**
-
-where maximum is used in one of the following ways
-
-* max(mul(a, x), x)
-* max(mul(x, a), x)
-* max(x, mul(a, x))
-* max(x, mul(x, a)
-
-This is interpreted as a ActivationLayer with a LeakyRelu activation function. Any other usage of max will result in the insertion of a simple maximum layer. The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting). See the TensorFlow [maximum documentation](https://www.tensorflow.org/api_docs/python/tf/maximum) for more information.
-
-**minimum**
-
-The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of 4D and 1D tensors. See the TensorFlow [minimum operator documentation](https://www.tensorflow.org/api_docs/python/tf/math/minimum) for more information.
-
-**multiply**
-
-The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of scalars and 1D tensors. See the TensorFlow [multiply documentation](https://www.tensorflow.org/api_docs/python/tf/multiply) for more information.
-
-**pad**
-
-Only supports tf.pad function with mode = 'CONSTANT' and constant_values = 0. See the TensorFlow [pad documentation](https://www.tensorflow.org/api_docs/python/tf/pad) for more information.
-
-**realdiv**
-
-The parser does not support all forms of [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of scalars and 1D tensors. See the TensorFlow [realdiv documentation](https://www.tensorflow.org/api_docs/python/tf/realdiv) for more information.
-
-**reshape**
-
-The parser does not support reshaping to or from 4D. See the TensorFlow [reshape documentation](https://www.tensorflow.org/api_docs/python/tf/reshape) for more information.
-
-**resize_images**
-
-The parser only supports `ResizeMethod.BILINEAR` with `align_corners=False`. See the TensorFlow [resize_images documentation](https://www.tensorflow.org/api_docs/python/tf/image/resize_images) for more information.
-
-**softmax**
-
-The parser only supports 2D inputs and does not support selecting the `softmax` dimension. See the TensorFlow [softmax documentation](https://www.tensorflow.org/api_docs/python/tf/nn/softmax) for more information.
-
-**split**
-
-Arm NN supports split along the channel dimension for data formats NHWC and NCHW.
-
-**subtract**
-
-The parser does not support all forms of broadcasting [broadcast composition](https://www.tensorflow.org/performance/xla/broadcasting), only broadcasting of scalars and 1D tensors. See the TensorFlow [subtract documentation](https://www.tensorflow.org/api_docs/python/tf/math/subtract) for more information.
-
-**pack/stack**
-
-See the TensorFlow [stack documentation](https://www.tensorflow.org/api_docs/python/tf/stack) for more information.
-
-**strided_slice**
-
-See the TensorFlow [strided_slice documentation](https://www.tensorflow.org/api_docs/python/tf/strided_slice) for more information.
-
-## Tested networks
-
-Arm tests these operators with the following TensorFlow fp32 neural networks:
-
-* Cifar10
-
-* Lenet
-
-* Simple MNIST. For more information check out the [tutorial](https://developer.arm.com/technologies/machine-learning-on-arm/developer-material/how-to-guides/deploying-a-tensorflow-mnist-model-on-arm-nn) on the Arm Developer portal.
-
-* mobilenet_v1_1.0_224. The Arm NN SDK only supports the non-quantized version of the network. See the [MobileNet_v1 documentation](https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md) for more information on quantized networks.
-
-* inception_v3. The Arm NN SDK only supports the official inception_v3 transformed model. See the TensorFlow documentation on [preparing models for mobile deployment](https://www.tensorflow.org/mobile/prepare_models) for more information on how to transform the inception_v3 network.
-
-* ResNet v2 50 implementation from the [TF Slim model zoo](https://github.com/tensorflow/models/tree/master/research/slim)
-
-More machine learning operators will be supported in future releases.
