use CommonType instead of auto, to address #28