documented ast construction