added rudimentary geolocation support for product availability.
cleaned up product state, added documentation to several files