Fixed up implementation