http://techiworks.com/when-can-object-reference-cast-to-interface-reference/