so many walls of texts... this will take a while...@__@