added high-level functions