some ideas by kmx