Modified print to use str.format() instead of % replacement.
Fixed formatting error in get_product_information. Got rid of a comparison to None.
Corrected % formatting to .format() and got rid of an unidiomatic
lambda.
Added a main() function.
Removed old string formatting.
Fixed string formatting.
Split delegation from __init__ in Client.
Wrapped main behavior in a main() function.
Rejiggered the classes to actually use decorator syntax and commented an explanation on how the @ syntax works. Also wrapped the executing code in a main() function.
Added list of current patterns.
merging pull request after fixing a few bugs