implment descriptor functions