implemented missing polimorphic methods and polimorphic factory method