This article is SO long.