diff --git a/arm_compute/core/Types.h b/arm_compute/core/Types.h
index beaec14..538449b 100644
--- a/arm_compute/core/Types.h
+++ b/arm_compute/core/Types.h
@@ -25,10 +25,13 @@
 #define __ARM_COMPUTE_TYPES_H__
 
 #include "arm_compute/core/Coordinates.h"
+#include "arm_compute/core/QAsymm8.h"
+#include "arm_compute/core/Rounding.h"
 #include "arm_compute/core/Strides.h"
 #include "arm_compute/core/TensorShape.h"
 #include "support/Half.h"
 
+#include <cmath>
 #include <cstddef>
 #include <cstdint>
 #include <string>
@@ -102,17 +105,6 @@
 /* Constant value used to indicate a ORB scaled pyramid */
 constexpr float SCALE_PYRAMID_ORB = 8.408964152537146130583778358414e-01;
 
-/** Rounding method */
-enum class RoundingPolicy
-{
-    TO_ZERO,         /**< Truncates the least significand values that are lost in operations. */
-    TO_NEAREST_UP,   /**< Rounds to nearest value; half rounds away from zero */
-    TO_NEAREST_EVEN, /**< Rounds to nearest value; half rounds to nearest even */
-};
-
-//forward declare round function
-int round(float, RoundingPolicy);
-
 /** Quantization settings (used for QASYMM8 data type) */
 struct QuantizationInfo
 {
@@ -140,20 +132,17 @@
     int   offset; /**< offset */
 
     /** Quantizes a value using the scale/offset in this QuantizationInfo */
-    uint8_t quantize(float value, RoundingPolicy rounding_policy) const
+    qasymm8_t quantize(float value, RoundingPolicy rounding_policy) const
     {
         ARM_COMPUTE_ERROR_ON_MSG(scale == 0, "QuantizationInfo::quantize: scale == 0");
-        int quantized = arm_compute::round(value / scale, rounding_policy) + offset;
-        quantized     = std::max(0, std::min(quantized, 255));
-        return quantized;
+        return sqcvt_qasymm8_f32(value, scale, offset, rounding_policy);
     }
 
     /** Dequantizes a value using the scale/offset in this QuantizationInfo */
-    float dequantize(uint8_t value) const
+    float dequantize(qasymm8_t value) const
     {
         ARM_COMPUTE_ERROR_ON_MSG(scale == 0, "QuantizationInfo::dequantize: scale == 0");
-        float dequantized = (static_cast<int>(value) - offset) * scale;
-        return dequantized;
+        return scvt_f32_qasymm8(value, scale, offset);
     }
 
     /** Indicates whether this QuantizationInfo has valid settings or not */
