abstraction in progress, major initial commit