## Problem Statement Recent versions of controller-runtime include https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.17.2/pkg/reconcile#ObjectReconciler which allows to get rid of the ubiquitous: ``` func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { o := new(MyType) if err := r.Client.Get(ctx, req.NamespacedName, o); err != nil { if k8serrors.IsNotFound(err) { return ctrl.Result{}, nil } return ctrl.Result{}, err } log.Trace(logger, "reconciling resource", o) ``` in favor of simpler: ``` func (r *Reconciler) Reconcile(ctx context.Context, o *MyType) (ctrl.Result, error) { log.Trace(logger, "reconciling resource", o) ``` Related PR: https://github.com/kubernetes-sigs/controller-runtime/pull/2592