add 3D, little changes