speical functions