lots of chnges to require