Split the estimate() interface into separate functions for each type. NFC.