implemented canny, first working version