Move all the work out of initialize