impl of select prototype