Changed Difference to non-templates class and added metadata class