A new implementation