fill out more user-level functions