fully working without middle click function