difference implementation (imcomplete)
difference implementation (imcomplete)