a new method and a little mess too