Added necessary classes with provided implementations