improve 3D, add 2D