Shouldn't all this be in setState?