mildly cleaner API