updated l_free