improve 2d interaction