Factored out the ALU into its own entity