hopefully fix recursion