better texture polymorphism implemented