default precision= -1 to allow type-stable callers