ADD. refactionring version