added more high-level functions