figured out texturing, used an abstract class