first pass at an abstract