added extra function. The scheme of it is still unconsidered.