freely function updated