do the hard work