split reduction and typing