http://stackoverflow.com/questions/1769403/understanding-kwargs-in-python