restucturing a bit