Now uses the operand type
Add promotion logic