New: v4, with improved API