public static void onDrag(Component comp, final P1<Point> startF, final P2<Point, Point> dragF) {
		final AtomicReference<P0> onMouseReleased = new AtomicReference<P0>();
		final AtomicReference<P1<Point>> onMouseDragged = new AtomicReference<P1<Point>>();
		onMousePressed(comp, new P1<Point>() {public void e(final Point initPoint) {
			if (startF!=null) {
				startF.e(initPoint);
			}
			onMouseDragged.set(Fs.p1(dragF, initPoint));
			onMouseReleased.set(new P0() {public void e() {
				onMouseDragged.set(null);
				onMouseReleased.set(null);
			}});
		}});
	
		onMouseDragged(comp, Fs.atomicP1(onMouseDragged));
		onMouseRelease(comp, Fs.atomicP0(onMouseReleased));
	}