abstract, second pass)