diff --git a/pkg/extension/extension.go b/pkg/extension/extension.go
index 5277dd50ffe748595aa744773770117f6cb214b2..f824e327273c3c8aa5ad2906540b558b858ce411 100644
--- a/pkg/extension/extension.go
+++ b/pkg/extension/extension.go
@@ -130,23 +130,25 @@ func (p *ParsedActionURL) GetScheme() string {
 	return p.scheme
 }
 
-func (p *ParsedActionURL) Parse(action string) error {
+func ParseActionURL(action string) (*ParsedActionURL, error) {
+
 	u, err := url.Parse(action)
 	if err != nil {
-		return err
+		return nil, err
 	}
-	p.scheme = u.Scheme
-	if p.GetScheme() == "grpc" {
+	parsed := &ParsedActionURL{}
+	parsed.scheme = u.Scheme
+	if parsed.GetScheme() == "grpc" {
 		path := u.Path
 		if strings.HasPrefix(u.Path, "/") {
 			path = u.Path[1:]
 		}
 		splitPath := strings.Split(path, "/")
 		if len(splitPath) < 2 {
-			return errors.Errorf("incorrect action URL, no action id: '%s'", action)
+			return nil, errors.Errorf("incorrect action URL, no action id: '%s'", action)
 		}
-		p.extensionID = splitPath[0]
-		p.actionID = splitPath[1]
+		parsed.extensionID = splitPath[0]
+		parsed.actionID = splitPath[1]
 	}
-	return nil
+	return nil, nil
 }