new basket implementation