defensive programming - in all functions check arguments, throw / return if missing
update version number
change matches to capture querystring