ICON abstraction, first draft