fix recursiveness