recursive_assignment added