end-to-end compilation