Impl nearly done. Little bit of fleshing out  needed