software mechanisms