now do the hard part