some work on shader class