add layer
add texture
refactoring