apply pImpl

add function for texture