Ouch! Could this be broken up into a few assignments for better code readability :)