self adaption