diff --git a/src/main/scala/uk/ac/soton/ecs/can/core/Adder.scala b/src/main/scala/uk/ac/soton/ecs/can/core/Adder.scala
index 7d470511dac5d16212b242a78d6adb0ba3f248d6..9d5c08312234aecd70e807eaaa47fde436771bf8 100644
--- a/src/main/scala/uk/ac/soton/ecs/can/core/Adder.scala
+++ b/src/main/scala/uk/ac/soton/ecs/can/core/Adder.scala
@@ -10,5 +10,10 @@ class Adder extends MultiIOModule {
   val rhs = IO(Input(UInt(512.W)))
   val out = IO(Output(UInt(512.W)))
 
-  out := lhs + rhs
+  private val _lhs = lhs.asTypeOf(Vec(16, UInt(32.W)))
+  private val _rhs = rhs.asTypeOf(Vec(16, UInt(32.W)))
+  private val _out = Wire(Vec(16, UInt(32.W)))
+  out := _out.asUInt()
+
+  _lhs.zip(_rhs).zip(_out).foreach { case ((l, r), o) => o := l + r }
 }