cleaner learning interface