texture stuff: the next iteration