Updated introduction, please read through.