moved a lot to component