fixed with new implementation