Damn this is complicated.