add Rubin algorithm