Sharing Functionality: Inhertiance, Modules and Mix-Ins