diff --git a/README.md b/README.md
index 1360de2b9..ddf519428 100644
--- a/README.md
+++ b/README.md
@@ -59,14 +59,14 @@ resource.
**IAM** password policy enforcer as **CloudFormation** custom resource.
-## [Lambda-CForm LogRetention](https://rafalwrzeszcz-wrzasqpl.github.io/pl.wrzasq.lambda/lambda-cform/lambda-cform-logretention/)
-
-**CloudFormation** custom resource handler for setting log retention for **CloudWatch** log groups.
-
## [Lambda-Metrics DynamoDb](https://rafalwrzeszcz-wrzasqpl.github.io/pl.wrzasq.lambda/lambda-metrics/lambda-metrics-dynamodb/)
**CloudWatch** custom metrics for **DynamoDb**.
+## [Lambda-Macro Lambda Function](https://rafalwrzeszcz-wrzasqpl.github.io/pl.wrzasq.lambda/lambda-macro/lambda-macro-lambda-function/)
+
+**CloudFormation** macro for enhancing Lambda function deployment.
+
# Resources
- [GitHub page with API documentation](https://rafalwrzeszcz-wrzasqpl.github.io/pl.wrzasq.lambda)
diff --git a/lambda-cform/lambda-cform-logretention/pom.xml b/lambda-cform/lambda-cform-logretention/pom.xml
deleted file mode 100644
index 0cf78b993..000000000
--- a/lambda-cform/lambda-cform-logretention/pom.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
- 4.0.0
-
-
- lambda-cform-logretention
- jar
-
- pl.wrzasq.lambda
- lambda-cform
- 1.0.36-SNAPSHOT
- ../
-
-
-
- WrzasqPl CloudFormation CloudWatch log retention handler
- https://rafalwrzeszcz-wrzasqpl.github.io/pl.wrzasq.lambda/lambda-cform/lambda-cform-logretention/
- CloudWatch log group retention handler for CloudFormation.
- 2019
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- ${project.groupId}:lambda-json
- com.amazonaws:aws-xray-recorder-sdk-aws-sdk
- com.amazonaws:aws-xray-recorder-sdk-aws-sdk-instrumentor
- io.symphonia:lambda-logging
- javax.xml.bind:jaxb-api
-
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
-
-
-
-
-
-
-
- ${project.groupId}
- lambda-json
- ${project.version}
-
-
-
- com.amazonaws
- aws-java-sdk-logs
- 1.11.588
-
-
-
- com.amazonaws
- aws-lambda-java-core
- 1.2.0
-
-
-
- com.amazonaws
- aws-xray-recorder-sdk-aws-sdk
- 2.2.1
-
-
-
- com.amazonaws
- aws-xray-recorder-sdk-aws-sdk-instrumentor
- 2.2.1
-
-
-
- com.sunrun
- cfn-response
- 1.2.1
-
-
-
- io.symphonia
- lambda-logging
- 1.0.3
-
-
-
- javax.xml.bind
- jaxb-api
- 2.3.1
-
-
-
- org.slf4j
- slf4j-api
- 1.7.26
-
-
-
- pl.wrzasq.commons
- commons-aws
- 1.0.24
-
-
-
diff --git a/lambda-cform/lambda-cform-logretention/src/main/checkstyle/java.header b/lambda-cform/lambda-cform-logretention/src/main/checkstyle/java.header
deleted file mode 100644
index 69b84c831..000000000
--- a/lambda-cform/lambda-cform-logretention/src/main/checkstyle/java.header
+++ /dev/null
@@ -1,8 +0,0 @@
-^/\*$
-^ \* This file is part of the pl\.wrzasq\.lambda\.$
-^ \*$
-^ \* @license http://mit-license\.org/ The MIT license$
-^ \* @copyright \d{4}[0-9, -]* © by Rafał Wrzeszcz - Wrzasq\.pl\.$
-^ \*/$
-
-^package pl\.wrzasq\.lambda\.cform\.logretention(\..+)?;$
diff --git a/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/Handler.java b/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/Handler.java
deleted file mode 100644
index 01bdd6f18..000000000
--- a/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/Handler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * This file is part of the pl.wrzasq.lambda.
- *
- * @license http://mit-license.org/ The MIT license
- * @copyright 2019 © by Rafał Wrzeszcz - Wrzasq.pl.
- */
-
-package pl.wrzasq.lambda.cform.logretention;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.logs.AWSLogs;
-import com.amazonaws.services.logs.AWSLogsClientBuilder;
-import com.sunrun.cfnresponse.CfnRequest;
-import pl.wrzasq.commons.aws.cloudformation.CustomResourceHandler;
-import pl.wrzasq.lambda.cform.logretention.model.RetentionRequest;
-import pl.wrzasq.lambda.cform.logretention.service.RetentionManager;
-
-/**
- * CloudFormation request handler.
- *
- *
Recommended memory: 256MB.
- */
-public class Handler {
- /**
- * CloudFormation response handler.
- */
- private static CustomResourceHandler handler;
-
- static {
- AWSLogs cloudWatch = AWSLogsClientBuilder.defaultClient();
-
- RetentionManager deploy = new RetentionManager(cloudWatch);
-
- Handler.handler = new CustomResourceHandler<>(deploy::provision, deploy::provision, deploy::delete);
- }
-
- /**
- * Handles invocation.
- *
- * @param request CloudFormation request.
- * @param context AWS Lambda context.
- */
- public void handle(CfnRequest request, Context context) {
- Handler.handler.handle(request, context);
- }
-}
diff --git a/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/model/RetentionRequest.java b/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/model/RetentionRequest.java
deleted file mode 100644
index 800fb4f30..000000000
--- a/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/model/RetentionRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * This file is part of the pl.wrzasq.lambda.
- *
- * @license http://mit-license.org/ The MIT license
- * @copyright 2019 © by Rafał Wrzeszcz - Wrzasq.pl.
- */
-
-package pl.wrzasq.lambda.cform.logretention.model;
-
-import java.util.List;
-
-import lombok.Data;
-
-/**
- * Retention and groups CloudFormation request.
- */
-@Data
-public class RetentionRequest {
- /**
- * List of log groups.
- */
- private List logGroups;
-
- /**
- * Number of days to retain logs.
- */
- private int retentionDays;
-}
diff --git a/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/service/RetentionManager.java b/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/service/RetentionManager.java
deleted file mode 100644
index c60409f07..000000000
--- a/lambda-cform/lambda-cform-logretention/src/main/java/pl/wrzasq/lambda/cform/logretention/service/RetentionManager.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * This file is part of the pl.wrzasq.lambda.
- *
- * @license http://mit-license.org/ The MIT license
- * @copyright 2019 © by Rafał Wrzeszcz - Wrzasq.pl.
- */
-
-package pl.wrzasq.lambda.cform.logretention.service;
-
-import java.util.UUID;
-
-import com.amazonaws.services.logs.AWSLogs;
-import com.amazonaws.services.logs.model.DeleteRetentionPolicyRequest;
-import com.amazonaws.services.logs.model.PutRetentionPolicyRequest;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import pl.wrzasq.commons.aws.cloudformation.CustomResourceResponse;
-import pl.wrzasq.lambda.cform.logretention.model.RetentionRequest;
-
-/**
- * CloudWatch API implementation.
- */
-public class RetentionManager {
- /**
- * Logger.
- */
- private Logger logger = LoggerFactory.getLogger(RetentionManager.class);
-
- /**
- * AWS CloudWatch API client.
- */
- private AWSLogs cloudWatch;
-
- /**
- * Initializes object with given CloudWatch client.
- *
- * @param cloudWatch AWS CloudWatch client.
- */
- public RetentionManager(AWSLogs cloudWatch) {
- this.cloudWatch = cloudWatch;
- }
-
- /**
- * Handles LogGroup retention setting.
- *
- * @param input Resource creation request.
- * @param physicalResourceId Physical ID of existing resource (in this case always null).
- * @return Data about published version.
- */
- public CustomResourceResponse