top: t bottom: b | r | b = 0 ifTrue: [ ^ self error: ' division by zero in fraction']. r <- t gcd: b. ^ self in: (self in: super new at: 1 put: (t quo: r)) at: 2 put: (b quo: r)