change to pointer receiver on ctx