this is not going to end well since it is called recusively