fixed new implementation