almost fully integrated into 2D viewer