Categories
Security & Monitoring

AWS User Notifications: Centralised Alerting For Organizations

In this post, I discuss the recent updates to AWS User Notifications, including Notification Hubs, Delegated Admins, and AWS Organizations integration.

Introduction

On 5 September 2025, AWS launched Organizational Notification Configurations for AWS User Notifications. This update lets AWS Organizations users manage alerts across their entire estate from a single account.

Prior to AWS User Notifications, creating alerts was a manual process using EventBridge rules, CloudWatch Alarms and SNS topics. I currently use this setup for root login alerts, and it’s definitely time for an upgrade. So in this post, I’ll walk through replacing those alerts with AWS User Notifications.

I will start by setting up a root login alert for a standalone account using AWS User Notifications. Next, I’ll check the results to see if this method improves on the previous alerting system. Finally, I will scale the updated configuration across my entire AWS Organization using the new centralised management features.

AWS User Notifications

In this section, I’ll use AWS User Notifications to set up a root login alert for a standalone AWS account.

User Notifications Introduction

AWS User Notifications is a fully managed service that delivers consistent, human-readable notifications from AWS services and custom applications. Notifications can be sent in various ways including email, mobile push notifications and the in-console Notification Centre.

Behind the scenes, the service acts as a central hub: it receives events from integrated AWS services, applies delivery and aggregation settings and then sends notifications to users based on their preferences.

Common use cases include:

  • Operational Monitoring: Real-time alerts for infrastructure or service issues.
  • Deployment & CI/CD Visibility: Notifications for build, deploy and pipeline events.
  • Security Alerts: Immediate awareness of suspicious activity or configuration changes.

The service also supports grouping and scheduling, reducing alert fatigue by sending relevant notifications at optimal times rather than a constant stream of individual emails.

Accessing User Notifications

The AWS User Notifications service is accessible both by clicking the bell icon in the top navigation and by searching in the AWS console:

2025 09 20 AWSUserNotificationsConsole

Selecting this loads the Notification Centre and presents several sections:

2025 09 20 AWSUserNotificationsMenu

There’s also a Quick Setup section with preconfigured CloudWatch, EC2 and Health options…

2025 09 20 AWSUserNotificationsQuickSetup

…and an area for notifications, aggregated by date received and by creator:

2025 09 20 AWSUserNotificationsTabs

Now, let’s examine creating a notification in a standalone AWS account.

User Notifications In Single Accounts

In this section, I’ll create a User Notification in an AWS account not aligned with an AWS Organization to see how the service handles a high-priority security event.

Notification Hub Creation

My first task is creating a Notification Hub, as this account currently doesn’t have one. Notification hubs are account-level settings that define the AWS Regions where notifications are stored, processed and replicated. A hub must exist before any notification configurations can be created.

User Notifications stores notification configuration data in both the default region us-east-1 (N. Virginia), and in regions with configured rules. So, for notifications receiving alerts about events in eu-west-1 (Ireland) and eu-west-2 (London), User Notifications will first create the settings in N. Virginia. Then it will copy them to Ireland and London.

This account only uses Ireland currently, so my Notification Hub looks like this:

2025 10 21 NotifHub

Notification Configuration Creation

With my Notification Hub set up, it’s time to build the logic that actually triggers an alert. Here, we define the alert triggers, how alerts will be sent and who will receive them.

As with many AWS services, I give a unique name and an optional description. Then I can choose my notification event rules:

2025 09 20 AWSUserNotificationsCreate

The interface here is similar to other AWS event-driven services. Selecting an AWS service name from the list (like AWS Console Sign-in) filters the Event Type list. I can then select my source AWS regions using checkboxes.

That leaves the Advanced Filter area. This uses EventBridge event patterns to select a subset of events, which is helpful because some patterns generate lots of events. Unfortunately, unlike the EventBridge console, there is limited help here for creating event patterns.

Users wanting help should check out the EventBridge console, which lets users create templates using pattern forms and dropdowns. For example, in this screenshot from the EventBridge console, this event pattern looks for all sign-in events linked to a specific user ARN:

2025 09 20 EventBridgeCreate
JSON
{
  "source": ["aws.signin"],
  "detail-type": ["AWS Console Sign In via CloudTrail"],
  "detail": {
    "userIdentity": {
      "arn": ["userARN"]
    }
  }
}

The detail section from this JSON array can then be copied from EventBridge and pasted into User Notifications with edits as needed. Here, I have modified the EventBridge event pattern to watch for all ConsoleLogin events where the userIdentity is of type Root:

2025 09 20 AWSUserNotificationsCreateRoot

After this, I can choose how often I want to receive these notifications. There are three aggregation options:

  • Receive Within 5 Minutes: A good balance of aggregation and frequency. An acceptable default in most cases.
  • Receive Within 12 Hours: Ideal for notifications that are not urgent or high-priority.
  • Do Not Aggregate: Best suited for high-priority events, though it may generate a large number of notifications.

I’m using Do Not Aggregate for my root login alert so I’m notified immediately.

Creating Delivery Channels

Finally, I need to choose where the notifications actually go. I can select up to fifty delivery channels per configuration, which are separate from the in-console Notification Centre.

I have three choices:

  • Emails: This uses Amazon SES API endpoints to deliver email notifications from @aws.com addresses. Each new email address must be validated before it can receive notifications, making distribution lists preferable at scale.
  • Chat Channels: This uses AWS Chatbot to push alerts into Slack and Microsoft Teams.
  • Mobile Devices: This uses push notifications via the AWS Console Mobile Application.

Despite my best efforts, I couldn’t get any mobile push notifications to trigger during testing. I’ll use email for now and will publish a follow-up post if I figure out what I’m missing with push notifications.

Outcomes

With the notification configuration complete, let’s review what AWS creates and how the notification looks. Navigating back to the My Notification Configurations tab, I can see my new RootLogins configuration:

2026 02 15 11 50 20 2025 09 20 AWSUserNotificationsSummary

Looking at the details, AWS shows the event pattern JSON and links to the underlying managed rules that are stored in EventBridge (1 rule per selected region):

2025 09 20 AWSUserNotificationsManagedRules

These links lead to EventBridge, which holds and controls the rules:

2025 09 20 AWSUserNotificationsManagedRulesEventBridge

So what does the actual alert look like? Below is the email generated when I performed a test root login. It is a big improvement over the old SNS text walls, organised into two clean and distinct sections:

The Event Detail: This identifies what happened (Console Login), who did it (Root), and the outcome (Success):

2025 10 16 Email1

The Notification Metadata: This provides the context of the User Notification itself, including the source ARN and the AWS region:

2025 10 16 Email2

This is a massive improvement over my previous alerting. The formatting makes it much easier to read the details without visually parsing raw JSON.

A quick security reminder: Just like the previous method, these emails expose AWS account IDs. If forwarding these to external ticketing systems or shared mailboxes, keep any data exfiltration policies in mind.

Now that we have a working setup in a standalone account, let’s see how this scales across AWS Organizations.

User Notifications In AWS Organizations

In this section, I explore how AWS User Notifications integrates with AWS Organizations.

Management & Member Accounts

Before continuing, I want to briefly explain the concepts of AWS Organizations Management accounts and Member accounts for those unfamiliar with them:

  • Management Account: The administrative core of an AWS Organization. Used for centralised billing, account creation and governing policies across the entire estate.
  • Member Accounts: Accounts within an AWS Organization. Member accounts are subject to the guardrails and management structures defined by the Management Account.

Review the AWS Terminology & Concepts documentation for further details.

Enabling Trusted Access

Before I can do anything with AWS User Notifications at an AWS Organization level, I must enable trusted access. AWS offers useful prompts when a section needs trusted access but it hasn’t been enabled yet:

2025 09 20 AWSUserNotificationsNotifsNoTrust

The included links lead directly to Organizations Settings within the User Notifications console. Trusted access is enabled from here:

2025 09 20 AWSUserNotificationsNotifsTrustOrgSettings

Once Trusted Access is enabled, the Notification Configurations section displays the AWS Organization structure:

2025 09 20 UserNotifsAWSOrganisations

Now let’s start configuring things!

Organizational Configuration

From the Management account, I can apply a single configuration (such as my Root Login alert) across my entire AWS Organization. I can either use checkboxes to select my entire AWS Organization or a subset of Organizational Units, or use the Advanced Filters to target a list of specific AWS account IDs.

Once an Organization Notification Configuration is live, its visibility depends on the account:

  • Management account: Visible in the My Notification Configurations tab, with full control and visibility granted through appropriate IAM permissions.
  • Member accounts: Visible as read-only notification configurations in the Organization Notification Configurations tab:
2025 10 21 OrgNotifs

Notifications from Organization Notification Configurations are only sent to the Management account, not to the Member accounts where the events occur. Additionally, Member accounts cannot edit or delete these rules.

If these limitations are undesirable, the Management account can appoint up to five Member accounts as delegated administrators:

2025 10 21 OrgNotifPrompt

Delegating notification administration to dedicated Security or Operations member accounts enables the management of Organization Notification Configurations without needing access to the Management account. This method streamlines operations and reduces the risk of Management account abuse or compromise. It also ensures that those responding to alerts can manage the related rules.

Summary

In this post, I explored recent updates to AWS User Notifications, including Notification Hubs, Delegated Administrators and enhanced support for scaling within AWS Organizations.

AWS User Notifications greatly simplifies the process of receiving and managing alerts across AWS Organizations member accounts. It reduces operational overhead and complexity, and offers a centralised, cross-account interface for managing notifications while maintaining the granular control AWS users expect.

That said, there are a few areas where I’d love to see the service evolve:

  • Cross-account Chatbot support: I have a dedicated member account for Chatbot configurations to avoid duplication, but I haven’t yet found a clean way to route User Notifications there.
  • EventBridge Feature Parity: The Advanced Filters are great, but I’d love to see the full EventBridge sandbox testing experience integrated directly into the User Notifications UI.
  • Linking Existing Rules: I already have some EventBridge rules in use. The ability to import or associate existing EventBridge rules with AWS User Notification Configurations would save time.
  • Simpler Testing: A straightforward “Send Test Notification” button per delivery channel would significantly improve usability.

Overall, AWS User Notifications transforms a process with many moving parts into something centralised, transparent, and far easier to operate at scale. While it isn’t perfect, it’s already making my life easier and I’m excited to see where it goes from here.

Finally, watch this official AWS demo for a clear overview of AWS User Notifications in action:

Like this post? Click the button below for links to contact, socials, projects and sessions:

SharkLinkButton 1

Thanks for reading ~~^~~

Categories
Security & Monitoring

Improve Your SCP Foundation In AWS Organizations

AWS Organizations now supports the full IAM policy language in Service Control Policies (SCPs). In this post, learn how to use the new features safely along with some examples.

(Oh, and for those unclear on the niche image header. – Ed)

Introduction

On 19 September 2025, AWS announced and posted that AWS Organizations now offers full IAM policy language support for service control policies (SCPs):

AWS Organizations now offers full IAM policy language support for service control policies (SCPs), enabling you to write SCPs with the same flexibility as IAM managed policies. With this launch, SCPs now support use of conditions, individual resource ARNs, and the NotAction element with Allow statements. Additionally, you can now use wildcards at the beginning or middle of Action element strings and the NotResource element.

In this post, I’ll explain what this change means in practice, provide examples from my AWS accounts, and share patterns to help adopt the new features safely. Whether implementing organization-wide guardrails, securing sandbox accounts or preventing accidental outages, this guidance will show how to get the most from SCPs after this update.

Service Control Policies

This section examines SCPs in closer detail. What are they? What do they do? And what benefits do they offer?

What Are SCPs?

Service Control Policies (SCPs) are an AWS Organizations feature that apply permission guardrails across multiple AWS accounts. To use SCPs, the AWS Organization must have all features enabled.

SCPs do not grant permissions. Instead, they define the maximum available permissions that IAM users and roles in an account can receive. Any action not permitted by an SCP is implicitly denied, even if an IAM policy within the account allows it. SCP syntax is similar to that used by IAM permission policies and resource-based policies (such as S3 bucket policies).

SCPs can be attached to the root of an AWS Organization, to an Organizational Unit (OU), or to individual accounts.

What Do SCPs Do?

SCPs use IAM policies and resource policies to determine whether to permit an action. The evaluation process consists of three parts:

Hierarchy & Inheritance

SCPs flow down through an AWS Organization. Attach a policy at the root, and everything underneath, including both OUs and accounts, inherits it. Each account ends up with the combined effect of every SCP above it.

Testing policies in a non-production OU before using them more widely helps to prevent unexpected lockouts!

Interaction with IAM and Resource Policies

SCPs define the boundaries within which IAM and resource policies operate. If either an SCP or IAM policy denies the action, then the request will be rejected. SCPs apply to all IAM users in an account, including the root user. Service-linked roles are usually exempt, allowing AWS services to function properly.

AWS have great documentation regarding how SCPs and IAM are evaluated.

Allow and Deny Approaches

By default, each account inherits the AWS-managed FullAWSAccess SCP that imposes no restrictions. Administrators can then apply additional policies using one of two strategies:

  • Deny list: Retain FullAWSAccess and add explicit Deny statements for disallowed services or actions.
  • Allow list: Remove FullAWSAccess and explicitly allow only the required services and actions. Everything else is implicitly denied.

In both models, explicit Deny statements always take priority.

Benefits Of SCPs

SCPs provide several advantages for organizations operating at scale or under compliance requirements:

  • Centralised Governance: Policies can be applied uniformly across all accounts from a single, central location. This reduces configuration drift and ensures consistent governance.
  • Enforcing Least Privilege: SCPs support least privilege by limiting available services and actions to only those that are approved. Additionally, newly launched AWS services can be blocked until they are approved.
  • Compliance & Risk Management: SCPs can implement controls like restricting access, requiring encryption or preventing the deletion of critical resources. These measures help reduce the risks associated with accidental misconfigurations and malicious actions.
  • Scalability & Efficiency: Managing IAM policies across multiple accounts is inefficient. SCPs streamline management by allowing the implementation of guardrails at both the OU and root levels.
  • Autonomy With Boundaries: SCPs create a secure outer boundary, allowing account teams to manage IAM policies within that boundary. This approach strikes a balance between enabling self-service and maintaining organizational controls.

Useful SCP & IAM Sites

This section has sites that I frequently hunt for when researching or writing SCPs for my AWS Organizations. This can be a struggle, as I usually forget what they’re called or what to search for! So for all the times I’ve remembered that these sites exist but couldn’t find them, they are here. This one’s for you Future Damo.

aws.permissions.cloud

aws.permissions.cloud compiles and organises a comprehensive collection of AWS IAM actions, managed policies, and permission metadata. This is presented in a searchable and structured format that includes tables and visualisations. The website uses the IAM Dataset created by AWS Community Hero Ian Mckay. Users can navigate the site using the left sidebar or by searching for a specific managed policy, IAM permission, or API method using the search bar at the top.

When comparing permissions.cloud‘s S3 Permissions Reference to the AWS S3 Service Authorization Reference, the two have many similarities. However, permissions.cloud features a better layout and includes a Used By column that indicates which AWS APIs use that IAM action.

In some cases this may be obvious, like the S3.AbortMultipartUpload API call using the s3:AbortMultipartUpload IAM action. Where this shines is with less obvious cases, like the FSx.CreateAndAttachS3AccessPoint API‘s use of the s3:CreateAccessPoint IAM action. While this information is all available in the documentation, having it all together in a searchable table is highly convenient.

2025 09 30 permissionscloud

asecure.cloud

asecure.cloud is a cloud security and compliance platform that aggregates AWS-recommended security configurations, automates environment assessments and enables rapid infrastructure-as-code remedial deployment.

The platform includes a library of security controls for numerous AWS services, IAM policies, cost controls and a configuration builder. While some content is premium-only, the free resources are substantial. Examples can be deployed using CloudFormation (and Terraform in many cases) custom templates, as well as AWS CLI scripts. For example, this page has a repository for Service Control Policy templates in several formats.

2025 09 28 asecurecloudSCPs

Speaking of which…

SCPs I Use

This section has some SCPs I use in my previously discussed AWS Organization. Each SCP has a policy and a brief description of what it does.

Deny LeaveOrganization

This policy, included in the AWS example SCPs, stops member account administrators from removing their accounts from an AWS Organization:

JSON
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "organizations:LeaveOrganization"
            ],
            "Resource": "*"
        }
    ]
}
  • Actions: Targets organizations:LeaveOrganization.
  • EffectDeny – Blocks the specified action
  • Condition: None – applies unconditionally to all accounts
  • Result: The account cannot leave an AWS Organization.

Restrict EC2 Instance Type

This asecurecloud policy prevents the launch of any EC2 instance type that isn’t allowed. I’m no big user of EC2, so this is currently set to t3.micro:

JSON
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": "*",
            "Effect": "Deny",
            "Condition": {
                "StringNotEquals": {
                    "ec2:InstanceType": "t3.micro"
                }
            }
        }
    ]
}
  • Action: Targets ec2:RunInstances
  • EffectDeny – blocks the action when conditions are met
  • ConditionStringNotEquals with ec2:InstanceType: "t3.micro"
  • Result: Denies launching any EC2 instance that is NOT a t3.micro

Restrict Lambda Python Runtime

This policy prevents the deployment of Lambda functions using the specified runtimes. This ensures that an account’s Lambda functions are consistent:

JSON
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyUnsupportedLambdaRuntimes",
      "Effect": "Deny",
      "Action": [
        "lambda:CreateFunction",
        "lambda:UpdateFunctionConfiguration"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "lambda:Runtime": [
            "python3.11",
            "python3.10",
            "python3.9"
          ]
        }
      }
    }
  ]
}

How it works:

  • Actions: Targets both lambda:CreateFunction and lambda:UpdateFunctionConfiguration
  • EffectDeny – blocks actions when conditions are met.
  • ConditionForAllValues:StringEquals with denied runtimes.
  • Result: Users can’t create or update Lambda functions using Python 3.9, 3.10, or 3.11.

Restrict AWS Service Use

This policy restricts AWS service usage to only specified services in approved regions.

JSON
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowServicesBasedOnRegion",
      "Effect": "Allow",
      "Action": [
        "ec2:*",
        "s3:*",
        "states:*",
        "lambda:*",
        "cloudformation:*",
        "iam:*",
        "cloudwatch:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": [
            "AWS-REGION-1",
            "AWS-REGION-2"
          ]
        }
      }
    }
  ]
}

Actions:

  • ec2:* – All EC2 operations
  • s3:* – All S3 operations
  • states:* – All Step Functions operations
  • lambda:* – All Lambda operations
  • cloudformation:* – All CloudFormation operations
  • iam:* – All IAM operations
  • cloudwatch:* – All CloudWatch operations
  • EffectAllow – Permits the specified actions when conditions are met.
  • ConditionsStringEquals with aws:RequestedRegion matching “AWS-REGION-1” or “AWS-REGION-2”

Result:

  • Only the seven specified service categories are allowed.
  • These services only work in the two specified regions.
  • All other AWS services are implicitly denied.
  • All other regions are blocked for any service.

Summary

In this post, we learned how to use the new AWS Organizations SCP features safely along with some examples.

Full support for IAM policy language in SCPs greatly enhances the governance capabilities of AWS Organizations. This allows for resource-level constraints, conditional logic and advanced action matching. To implement these features effectively, follow clear change control processes:

  • Validate policies in isolated OUs
  • Run representative simulations.
  • Stage deployments.
  • Ensure that centralised documentation and incident recovery plans are established.

Like this post? Click the button below for links to contact, socials, projects and sessions:

SharkLinkButton 1

Thanks for reading ~~^~~

Categories
Security & Monitoring

Building Strong Fundamentals With Microsoft’s SC-900

In this post, I will talk about my recent experience with Microsoft’s SC-900 certification and the resources I used to study for it.

Introduction

On 23 May 2022 I earned the Microsoft Certified Security, Compliance, and Identity Fundamentals certification. This is my third Microsoft certification, joining my other badges on Credly.

I wanted to take the time to write about my experience in the hope that it may help others who are looking at the certification. I also wanted to address the elephant in the room – why did I take a Microsoft certification when my blog is called amazonwebshark?

First, I’ll talk about my motivation for studying for Microsoft’s SC-900 certification. Then I’ll talk about the resources I used, and finally I’ll cover my takeaways from the experience.

Motivation

In this section I’ll talk about my reasons for studying for Microsoft’s SC-900 certification.

Security Is Job Zero

While I’m a Data Engineer by trade, security is still a big part of my job. I need to make sure that any S3 objects and EBS volumes I create are encrypted. Any AWS resources using servers need security groups and NACLs that only allow certain levels of access. Also, SQL Server objects like logins and linked servers must have appropriate scopes and follow principles of least privilege.

Then I have my own resources to consider. My AWS account needs to use appropriate IAM and S3 bucket policies to control access to resources and data. I need to consider multi-factor authentication and access keys. Monitoring is needed for any hacking attempts or costs resulting from malicious activity.

In addition, this blog also presents security challenges. My site backups must be hardened and kept up to date. I need to consider attacks such as Cross-Site Scripting and SQL Injection. There are also plugins to consider. Are they up to date? Are they fit for purpose?

These factors are only the tip of the iceberg. The security landscape is ever-changing and needs constant vigilance.

Validation Of Knowledge

While security is a vital job, many security certifications test at a high level. Examples include the AWS Certified Security – Specialty certification and the CompTIA Security+. These usually recommend many years of industry experience and in-depth knowledge of the exam provider’s services.

Microsoft’s SC-900 is aimed at people who are getting to know the fundamentals of security, compliance, and identity. While the exam is Microsoft-branded, the topics tested are broadly the same across all cloud providers. This makes the SC-900 useful beyond Microsoft’s platform.

Speaking of which…

Security Is Security Is Security

Having earned my AWS Developer Associate Certification at the end of March, I currently hold all of the AWS Associate certifications. Each of these exams requires some security knowledge.

The Solutions Architect exam can ask about securing access to resources and data using services including IAM, subnets and NACLs. Meanwhile, the SysOps Administrator exam looks at implementing and managing security policies and strategies. It includes services like AWS CloudTrail, AWS Control Tower and AWS SSO.

Finally, the Developer exam covers authentication, authorisation and encryption with services like Amazon Cognito, API Gateway and AWS KMS. In short, the three exams cover a wide range of AWS services offering different types of security.

The major cloud providers all have their own version of common security products. Microsoft maintains a comparison list, offering examples like:

Studying for the SC-900 forced me to check that I understood the various services conceptually. The challenge was less about remembering names, and more about recognising what the services did. In other words, what do I know outside of AWS?

Resources

In this section I’ll talk about the resources I used to study for the Microsoft SC-900 certification.

John Savill

John Savill’s Technical Training YouTube channel started in 2008. Since then he’s created a wide range of videos from deep dives to weekly updates. In addition, he has study cram videos for many Microsoft certifications including the SC-900.

I found John’s channel while studying for other Microsoft certifications in 2021. John’s DP-900 video was a big help in checking what I was happy with and what needed attention.

Since then I’ve kept an eye on John’s channel as I enjoy his style, and he publishes videos on other topics including PowerShell and DevOps. So when I committed to taking Microsoft’s SC-900 certification he was my first port of call.

Thanks John! You’re a great human!

Microsoft Learn

Microsoft’s education platform provides learning via guided paths and individual modules depending on the desired result. Microsoft Learn has options for casual and in-depth learning, exam certification and on-demand streaming. It also includes a gamified experience system to drive user engagement.

Microsoft Learn has a free learning path with four modules tailed for the SC-900 exam. These modules offer a wide range of learning resources. Some sections are text-based. Others include videos and screenshots of the Azure portal. Some sections also include interactive sections that allow the use of a sandbox.

Microsoft Learn is a great resource and I look forward to seeing what else it has to offer.

Summary

In this post, I talked about my recent experience with Microsoft’s SC-900 certification and the resources I used to study for it.

In my opinion, Microsoft’s SC-900 has found a great niche for itself. Microsoft’s investment in this certification highlights the importance of security at a fundamental level. And despite the exam’s branding, the knowledge required to earn the certification is useful for many platforms and roles.

Microsoft’s SC-900 helped me prove my familiarity with security fundamentals. It also demonstrated to me that my security knowledge goes beyond the AWS cloud. It was a good experience and well worth taking on!

If this post has been useful, please feel free to follow me on the following platforms for future updates:

Thanks for reading ~~^~~