CAML algorithm