restructed add subs