Add adaptive function, undesirablle result... expect to be modified.