abstract made more compact, other slight changes