diff --git a/core/dns-challenge-solver/Makefile b/core/dns-challenge-solver/Makefile
index 545735b..e43ccb2 100644
--- a/core/dns-challenge-solver/Makefile
+++ b/core/dns-challenge-solver/Makefile
@@ -1,3 +1,9 @@
+repo_name ?= dtabidze
+podman ?= docker
+ifeq ($(podman), podman)
+manifest_dest=docker://docker.io/$(repo_name)/dns-challenge-solver:latest
+endif
+
 clean:
 	rm -f dns-challenge-solver*
 
@@ -20,14 +26,14 @@
 	/usr/local/go/bin/go build -o dns-challenge-solver_amd64 *.go
 
 push_arm64: clean build_arm64
-	podman build --platform linux/arm64 --tag=giolekva/dns-challenge-solver:arm64 .
-	podman push giolekva/dns-challenge-solver:arm64
+	$(podman) build --platform linux/arm64 --tag=giolekva/dns-challenge-solver:arm64 .
+	$(podman) push giolekva/dns-challenge-solver:arm64
 
 push_amd64: clean build_amd64
-	podman build --platform linux/amd64 --tag=giolekva/dns-challenge-solver:amd64 .
-	podman push giolekva/dns-challenge-solver:amd64
+	$(podman) build --platform linux/amd64 --tag=giolekva/dns-challenge-solver:amd64 .
+	$(podman) push giolekva/dns-challenge-solver:amd64
 
 push: push_arm64 push_amd64
-	podman manifest create giolekva/dns-challenge-solver:latest giolekva/dns-challenge-solver:arm64 giolekva/dns-challenge-solver:amd64
-	podman manifest push giolekva/dns-challenge-solver:latest docker://docker.io/giolekva/dns-challenge-solver:latest
-	podman manifest rm giolekva/dns-challenge-solver:latest
+	$(podman) manifest create giolekva/dns-challenge-solver:latest giolekva/dns-challenge-solver:arm64 giolekva/dns-challenge-solver:amd64
+	$(podman) manifest push giolekva/dns-challenge-solver:latest $(manifest_dest)
+	$(podman) manifest rm giolekva/dns-challenge-solver:latest
diff --git a/core/dns-challenge-solver/main.go b/core/dns-challenge-solver/main.go
index 9055735..8daa353 100644
--- a/core/dns-challenge-solver/main.go
+++ b/core/dns-challenge-solver/main.go
@@ -2,7 +2,6 @@
 
 import (
 	"bytes"
-	"context"
 	"encoding/json"
 	"fmt"
 	"io"
@@ -11,7 +10,6 @@
 	"strings"
 
 	extapi "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/client-go/kubernetes"
 	"k8s.io/client-go/rest"
 
@@ -111,11 +109,6 @@
 // be used by your provider here, you should reference a Kubernetes Secret
 // resource and fetch these credentials using a Kubernetes clientset.
 type pcloudDNSProviderConfig struct {
-	APIConfigMapName      string `json:"apiConfigMapName,omitempty"`
-	APIConfigMapNamespace string `json:"apiConfigMapNamespace,omitempty"`
-}
-
-type apiConfig struct {
 	CreateAddress string `json:"createTXTAddr,omitempty"`
 	DeleteAddress string `json:"deleteTXTAddr,omitempty"`
 }
@@ -141,13 +134,8 @@
 	if err != nil {
 		return err
 	}
-	apiCfg, err := loadAPIConfig(c.client, cfg)
-	if err != nil {
-		fmt.Printf("Failed to load API config: %s\n", err.Error())
-		return err
-	}
-	fmt.Printf("API config: %+v\n", apiCfg)
-	zm := &zoneControllerManager{apiCfg.CreateAddress, apiCfg.DeleteAddress}
+	fmt.Printf("API config: %+v\n", cfg)
+	zm := &zoneControllerManager{cfg.CreateAddress, cfg.DeleteAddress}
 	domain, entry := getDomainAndEntry(ch)
 	fmt.Printf("%s %s\n", domain, entry)
 	err = zm.CreateTextRecord(domain, entry, ch.Key)
@@ -169,13 +157,8 @@
 	if err != nil {
 		return err
 	}
-	apiCfg, err := loadAPIConfig(c.client, cfg)
-	if err != nil {
-		fmt.Printf("Failed to load API config: %s\n", err.Error())
-		return err
-	}
-	fmt.Printf("API config: %+v\n", apiCfg)
-	zm := &zoneControllerManager{apiCfg.CreateAddress, apiCfg.DeleteAddress}
+	fmt.Printf("API config: %+v\n", cfg)
+	zm := &zoneControllerManager{cfg.CreateAddress, cfg.DeleteAddress}
 	domain, entry := getDomainAndEntry(ch)
 	err = zm.DeleteTextRecord(domain, entry, ch.Key)
 	if err != nil {
@@ -220,22 +203,6 @@
 	return cfg, nil
 }
 
-func loadAPIConfig(client *kubernetes.Clientset, cfg pcloudDNSProviderConfig) (apiConfig, error) {
-	config, err := client.CoreV1().ConfigMaps(cfg.APIConfigMapNamespace).Get(context.Background(), cfg.APIConfigMapName, metav1.GetOptions{})
-	if err != nil {
-		return apiConfig{}, fmt.Errorf("unable to get api config map `%s` `%s`; %v", cfg.APIConfigMapName, cfg.APIConfigMapNamespace, err)
-	}
-	create, ok := config.Data["createTXTAddr"]
-	if !ok {
-		return apiConfig{}, fmt.Errorf("create address missing")
-	}
-	delete, ok := config.Data["deleteTXTAddr"]
-	if !ok {
-		return apiConfig{}, fmt.Errorf("delete address missing")
-	}
-	return apiConfig{create, delete}, nil
-}
-
 func getDomainAndEntry(ch *v1alpha1.ChallengeRequest) (string, string) {
 	// Both ch.ResolvedZone and ch.ResolvedFQDN end with a dot: '.'
 	resolvedFQDN := strings.TrimSuffix(ch.ResolvedFQDN, ".")
