Add higher-level functions