make Pin an interface rather than a struct