Added compiling version of abstract factory (not finished yet)
changed the protected method eat to public