(although working in javascript of course any function can get redefined at any time so some things never change)