final version of actual code (I think!)