Running Flatcar Container Linux on EC2

The current AMIs for all Flatcar Container Linux channels and EC2 regions are listed below and updated frequently. Using CloudFormation is the easiest way to launch a cluster, but it is also possible to follow the manual steps at the end of the article. Questions can be directed to the Flatcar Container Linux IRC channel or user mailing list .

Release retention time

After publishing, releases will remain available as public AMIs on AWS for 9 months. AMIs older than 9 months will be un-published in regular garbage collection sweeps. Please note that this will not impact existing AWS instances that use those releases. However, deploying new instances (e.g. in autoscaling groups pinned to a specific AMI) will not be possible after the AMI was un-published.

Choosing a channel

Flatcar Container Linux is designed to be updated automatically with different schedules per channel. You can disable this feature , although we don’t recommend it. Read the release notes for specific features and bug fixes.

The Alpha channel closely tracks master and is released frequently. The newest versions of system libraries and utilities will be available for testing. The current version is Flatcar Container Linux 2697.0.0.

View as json feed: amd64 arm64
EC2 Region AMI Type AMI ID CloudFormation
ap-east-1 HVM (amd64) ami-09ef8c9d1f3fa4660 Launch Stack
HVM (arm64) ami-03d82aeaea473d8f2 Launch Stack
ap-northeast-1 HVM (amd64) ami-0b2eea67ba8071fad Launch Stack
HVM (arm64) ami-0e2b0eda613a846d7 Launch Stack
ap-northeast-2 HVM (amd64) ami-08539e1430269b9ea Launch Stack
HVM (arm64) ami-08d7b015cac73b5be Launch Stack
ap-south-1 HVM (amd64) ami-0fdbc5333f0f5c6ff Launch Stack
HVM (arm64) ami-07c509a1ce612d38c Launch Stack
ap-southeast-1 HVM (amd64) ami-028600b159a4c7cc0 Launch Stack
HVM (arm64) ami-0c6f2447f65f68443 Launch Stack
ap-southeast-2 HVM (amd64) ami-08c62edb88f340ba6 Launch Stack
HVM (arm64) ami-09d56359240455f3d Launch Stack
ca-central-1 HVM (amd64) ami-003757d67815fc0e1 Launch Stack
HVM (arm64) ami-06b0f46f2b7c64516 Launch Stack
eu-central-1 HVM (amd64) ami-003878005bd84caf9 Launch Stack
HVM (arm64) ami-0e72a99df1b1e432e Launch Stack
eu-north-1 HVM (amd64) ami-009386f0ea9996a8d Launch Stack
HVM (arm64) ami-001747de9a1c6da2b Launch Stack
eu-west-1 HVM (amd64) ami-0a23422f403b946e7 Launch Stack
HVM (arm64) ami-0d1fb0bc900186c15 Launch Stack
eu-west-2 HVM (amd64) ami-05013365fe60996ce Launch Stack
HVM (arm64) ami-05afb26d96a428895 Launch Stack
eu-west-3 HVM (amd64) ami-030886192518268aa Launch Stack
HVM (arm64) ami-0ab6133147287025a Launch Stack
me-south-1 HVM (amd64) ami-05e887894a6efdde9 Launch Stack
HVM (arm64) ami-0ebc24b3bc94186f0 Launch Stack
sa-east-1 HVM (amd64) ami-054370dc089c0c94a Launch Stack
HVM (arm64) ami-0ea4472ef01bfe52a Launch Stack
us-east-1 HVM (amd64) ami-0410e2cbe94f8f489 Launch Stack
HVM (arm64) ami-09f48d5b70f9e5440 Launch Stack
us-east-2 HVM (amd64) ami-009085251a28aa7a6 Launch Stack
HVM (arm64) ami-0b257bc3dae8989e2 Launch Stack
us-west-1 HVM (amd64) ami-0bf63b6b8e7fda22b Launch Stack
HVM (arm64) ami-0afb44c65f3599efe Launch Stack
us-west-2 HVM (amd64) ami-029637233442113de Launch Stack
HVM (arm64) ami-09508271531574dee Launch Stack

The Beta channel consists of promoted Alpha releases. The current version is Flatcar Container Linux 2643.1.1.

View as json feed: amd64
EC2 Region AMI Type AMI ID CloudFormation
ap-east-1 HVM (amd64) ami-0d281ff82b86662b8 Launch Stack
ap-northeast-1 HVM (amd64) ami-0d42cd77b99d73bbb Launch Stack
ap-northeast-2 HVM (amd64) ami-05743438594770981 Launch Stack
ap-south-1 HVM (amd64) ami-0edd0bbe7cd7da4ae Launch Stack
ap-southeast-1 HVM (amd64) ami-0afd0e7cae6b7dd79 Launch Stack
ap-southeast-2 HVM (amd64) ami-0ff964ce5926a757a Launch Stack
ca-central-1 HVM (amd64) ami-0f382180c48787a87 Launch Stack
eu-central-1 HVM (amd64) ami-03b26558725b0672a Launch Stack
eu-north-1 HVM (amd64) ami-0653fad0b84187c1d Launch Stack
eu-west-1 HVM (amd64) ami-0483309096c585ee1 Launch Stack
eu-west-2 HVM (amd64) ami-084acf53b703a41a3 Launch Stack
eu-west-3 HVM (amd64) ami-0b3c417324fb50f75 Launch Stack
me-south-1 HVM (amd64) ami-0ab9cf6af23675d3a Launch Stack
sa-east-1 HVM (amd64) ami-0c20151fcdaf3ace9 Launch Stack
us-east-1 HVM (amd64) ami-090fe4fa01c15cecf Launch Stack
us-east-2 HVM (amd64) ami-00a38eb907df07525 Launch Stack
us-west-1 HVM (amd64) ami-0613aeb00ed02adbe Launch Stack
us-west-2 HVM (amd64) ami-0c527b79bd8cddfb7 Launch Stack

The Edge channel includes bleeding-edge features with the newest versions of the Linux kernel, systemd and other core packages. Can be highly unstable. The current version is Flatcar Container Linux 2466.99.0.

EC2 Region AMI Type AMI ID CloudFormation
ap-east-1 HVM (amd64) ami-0029ed2c00b284a95 Launch Stack
HVM (arm64) ami-0cde7033fa6bcee17 Launch Stack
ap-northeast-1 HVM (amd64) ami-03de4455102b2a92e Launch Stack
HVM (arm64) ami-0a9ea66ee2b271587 Launch Stack
ap-northeast-2 HVM (amd64) ami-0fa29269023d95001 Launch Stack
HVM (arm64) ami-074cb3948a34017a0 Launch Stack
ap-south-1 HVM (amd64) ami-0fb46b600f2aca4e1 Launch Stack
HVM (arm64) ami-0ceaed7c9d0f87d45 Launch Stack
ap-southeast-1 HVM (amd64) ami-0a6b32f389401c177 Launch Stack
HVM (arm64) ami-0518d47f3b8b44d5b Launch Stack
ap-southeast-2 HVM (amd64) ami-0412490cf5c6a15d3 Launch Stack
HVM (arm64) ami-041e3a6cbb758958a Launch Stack
ca-central-1 HVM (amd64) ami-076025e2f28c65607 Launch Stack
HVM (arm64) ami-07fdb592799a132cf Launch Stack
eu-central-1 HVM (amd64) ami-009f30f06e90a2962 Launch Stack
HVM (arm64) ami-05fc26d5d73ca1f6b Launch Stack
eu-north-1 HVM (amd64) ami-093a034857b0e19ae Launch Stack
HVM (arm64) ami-0fd671b8a15ca5e0f Launch Stack
eu-west-1 HVM (amd64) ami-0acd84e3d8e79c595 Launch Stack
HVM (arm64) ami-00fca33bcd7f93826 Launch Stack
eu-west-2 HVM (amd64) ami-0a844c6e6ed7e8591 Launch Stack
HVM (arm64) ami-0ff13ff8623ef93f4 Launch Stack
eu-west-3 HVM (amd64) ami-09bb22740c97e5fb0 Launch Stack
HVM (arm64) ami-02b8b9c099f9868f9 Launch Stack
me-south-1 HVM (amd64) ami-066ef9a0660b99958 Launch Stack
HVM (arm64) ami-0d7a8f9f15c1e5234 Launch Stack
sa-east-1 HVM (amd64) ami-0f1401074345667c6 Launch Stack
HVM (arm64) ami-0de4279896aa46920 Launch Stack
us-east-1 HVM (amd64) ami-0157dca117b3d3e5d Launch Stack
HVM (arm64) ami-0422302ecc961671f Launch Stack
us-east-2 HVM (amd64) ami-06f0a4868bcdfd485 Launch Stack
HVM (arm64) ami-0a2b7312228a58f6c Launch Stack
us-west-1 HVM (amd64) ami-081652cd66d10f632 Launch Stack
HVM (arm64) ami-02bd3609d5a2b957a Launch Stack
us-west-2 HVM (amd64) ami-053930c06131d49ad Launch Stack
HVM (arm64) ami-0d8325578a3100869 Launch Stack

The Stable channel should be used by production clusters. Versions of Flatcar Container Linux are battle-tested within the Beta and Alpha channels before being promoted. The current version is Flatcar Container Linux 2605.8.0.

View as json feed: amd64
EC2 Region AMI Type AMI ID CloudFormation
ap-east-1 HVM (amd64) ami-0a5e8db3f2d9a83d7 Launch Stack
ap-northeast-1 HVM (amd64) ami-0da7ff5b0d88b0f70 Launch Stack
ap-northeast-2 HVM (amd64) ami-001762e18e5b9ad65 Launch Stack
ap-south-1 HVM (amd64) ami-045aea6d72d3198a9 Launch Stack
ap-southeast-1 HVM (amd64) ami-04ea62937d9ce8e98 Launch Stack
ap-southeast-2 HVM (amd64) ami-0934a29645bf8c9c3 Launch Stack
ca-central-1 HVM (amd64) ami-03cf05aa25f3b8654 Launch Stack
eu-central-1 HVM (amd64) ami-01b3ed9fb3861422d Launch Stack
eu-north-1 HVM (amd64) ami-0964e6edec73c754e Launch Stack
eu-west-1 HVM (amd64) ami-0ce8041e111a5e0c1 Launch Stack
eu-west-2 HVM (amd64) ami-0de1cf6a241b43cb4 Launch Stack
eu-west-3 HVM (amd64) ami-0cbf5357d24278be2 Launch Stack
me-south-1 HVM (amd64) ami-0fd9927614cb049d9 Launch Stack
sa-east-1 HVM (amd64) ami-02ac7cb1e91d1ecf4 Launch Stack
us-east-1 HVM (amd64) ami-006c88b6ca69f7811 Launch Stack
us-east-2 HVM (amd64) ami-058a15cede9a8dbe8 Launch Stack
us-west-1 HVM (amd64) ami-0b553b7d6c8ae2e4d Launch Stack
us-west-2 HVM (amd64) ami-07ead16a3df6a7bd4 Launch Stack

AWS China AMIs maintained by Giant Swarm

The following AMIs are not part of the official Flatcar Container Linux release process and may lag behind (query version).

View as json feed: amd64
EC2 Region AMI Type AMI ID CloudFormation
cn-north-1 HVM (amd64) ami-0cc1c2c81cd81a513 Launch Stack
cn-northwest-1 HVM (amd64) ami-052021faebcd97de7 Launch Stack

CloudFormation will launch a cluster of Flatcar Container Linux machines with a security and autoscaling group.

Container Linux Configs

Flatcar Container Linux allows you to configure machine parameters, configure networking, launch systemd units on startup, and more via Container Linux Configs. These configs are then transpiled into Ignition configs and given to booting machines. Head over to the docs to learn about the supported features .

You can provide a raw Ignition config to Flatcar Container Linux via the Amazon web console or via the EC2 API .

As an example, this Container Linux Config will configure and start etcd:

etcd:
  # All options get passed as command line flags to etcd.
  # Any information inside curly braces comes from the machine at boot time.

  # multi_region and multi_cloud deployments need to use {PUBLIC_IPV4}
  advertise_client_urls:       "http://{PRIVATE_IPV4}:2379"
  initial_advertise_peer_urls: "http://{PRIVATE_IPV4}:2380"
  # listen on both the official ports and the legacy ports
  # legacy ports can be omitted if your application doesn't depend on them
  listen_client_urls:          "http://0.0.0.0:2379"
  listen_peer_urls:            "http://{PRIVATE_IPV4}:2380"
  # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
  # specify the initial size of your cluster with ?size=X
  discovery:                   "https://discovery.etcd.io/<token>"

Instance storage

Ephemeral disks and additional EBS volumes attached to instances can be mounted with a .mount unit. Amazon’s block storage devices are attached differently depending on the instance type . Here’s the Container Linux Config to format and mount the first ephemeral disk, xvdb, on most instance types:

storage:
  filesystems:
    - mount:
        device: /dev/xvdb
        format: ext4
        wipe_filesystem: true

systemd:
  units:
    - name: media-ephemeral.mount
      enable: true
      contents: |
        [Mount]
        What=/dev/xvdb
        Where=/media/ephemeral
        Type=ext4

        [Install]
        RequiredBy=local-fs.target

For more information about mounting storage, Amazon’s own documentation is the best source. You can also read about mounting storage on Flatcar Container Linux .

Adding more machines

To add more instances to the cluster, just launch more with the same Container Linux Config, the appropriate security group and the AMI for that region. New instances will join the cluster regardless of region if the security groups are configured correctly.

SSH to your instances

Flatcar Container Linux is set up to be a little more secure than other cloud images. By default, it uses the core user instead of root and doesn’t use a password for authentication. You’ll need to add an SSH key(s) via the AWS console or add keys/passwords via your Container Linux Config in order to log in.

To connect to an instance after it’s created, run:

ssh [email protected]<ip address>

Multiple clusters

If you would like to create multiple clusters you will need to change the “Stack Name”. You can find the direct template file on S3 .

Manual setup

TL;DR: launch three instances of ami-0410e2cbe94f8f489 (amd64) in us-east-1 with a security group that has open port 22, 2379, 2380, 4001, and 7001 and the same “User Data” of each host. SSH uses the core user and you have etcd and Docker to play with.

Creating the security group

You need open port 2379, 2380, 7001 and 4001 between servers in the etcd cluster. Step by step instructions below.

Note: This step is only needed once

First we need to create a security group to allow Flatcar Container Linux instances to communicate with one another.

  1. Go to the security group page in the EC2 console.
  2. Click “Create Security Group”
    • Name: flatcar-testing
    • Description: Flatcar Container Linux instances
    • VPC: No VPC
    • Click: “Yes, Create”
  3. In the details of the security group, click the Inbound tab
  4. First, create a security group rule for SSH
    • Create a new rule: SSH
    • Source: 0.0.0.0/0
    • Click: “Add Rule”
  5. Add two security group rules for etcd communication
    • Create a new rule: Custom TCP rule
    • Port range: 2379
    • Source: type “flatcar-testing” until your security group auto-completes. Should be something like “sg-8d4feabc”
    • Click: “Add Rule”
    • Repeat this process for port range 2380, 4001 and 7001 as well
  6. Click “Apply Rule Changes”

Launching a test cluster

We will be launching three instances, with a few parameters in the User Data, and selecting our security group.

  1. {% for region in site.data.alpha_channel.amis %} {% if region.name == 'us-east-1' %} Open the quick launch wizard to boot {{region.hvm}} (amd64). {% endif %} {% endfor %}
  2. On the second page of the wizard, launch 3 servers to test our clustering
    • Number of instances: 3
    • Click "Continue"
  3. Next, we need to specify a discovery URL, which contains a unique token that allows us to find other hosts in our cluster. If you're launching your first machine, generate one at https://discovery.etcd.io/new?size=3, configure the `?size=` to your initial cluster size and add it to the metadata. You should re-use this key for each machine in the cluster.
  4. Use ct to convert the following configuration into an Ignition config, and back in the EC2 dashboard, paste it into the "User Data" field. ```yaml etcd: # All options get passed as command line flags to etcd. # Any information inside curly braces comes from the machine at boot time.
            # multi_region and multi_cloud deployments need to use {PUBLIC_IPV4}
            advertise_client_urls:       "http://{PRIVATE_IPV4}:2379"
            initial_advertise_peer_urls: "http://{PRIVATE_IPV4}:2380"
            # listen on both the official ports and the legacy ports
            # legacy ports can be omitted if your application doesn't depend on them
            listen_client_urls:          "http://0.0.0.0:2379"
            listen_peer_urls:            "http://{PRIVATE_IPV4}:2380"
            # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
            # specify the initial size of your cluster with ?size=X
            discovery:                   "https://discovery.etcd.io/<token>"
          ```
          <ul>
            <li>Paste configuration into "User Data"</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Storage Configuration
          <ul>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Tags
          <ul>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Create Key Pair
          <ul>
            <li>Choose a key of your choice, it will be added in addition to the one in the gist.</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Choose one or more of your existing Security Groups
          <ul>
            <li>"flatcar-testing" as above.</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Launch!
        </li>
      </ol>
    </div>
    <div class="tab-pane" id="beta-manual">
      <p>We will be launching three instances, with a few parameters in the User Data, and selecting our security group.</p>
      <ol>
        <li>
        {% for region in site.data.beta_channel.amis %}
          {% if region.name == 'us-east-1' %}
            Open the <a href="https://console.aws.amazon.com/ec2/home?region={{region.name}}#launchAmi={{region.hvm}}" target="_blank">quick launch wizard</a> to boot {{region.hvm}} (amd64).
          {% endif %}
        {% endfor %}
        </li>
        <li>
          On the second page of the wizard, launch 3 servers to test our clustering
          <ul>
            <li>Number of instances: 3</li>
            <li>Click "Continue"</li>
          </ul>
        </li>
        <li>
          Next, we need to specify a discovery URL, which contains a unique token that allows us to find other hosts in our cluster. If you're launching your first machine, generate one at <a href="https://discovery.etcd.io/new?size=3">https://discovery.etcd.io/new?size=3</a>, configure the `?size=` to your initial cluster size and add it to the metadata. You should re-use this key for each machine in the cluster.
        </li>
        <li>
          Use <a href="provisioning">ct</a> to convert the following configuration into an Ignition config, and back in the EC2 dashboard, paste it into the "User Data" field.
          ```yaml
          etcd:
            # All options get passed as command line flags to etcd.
            # Any information inside curly braces comes from the machine at boot time.
    
            # multi_region and multi_cloud deployments need to use {PUBLIC_IPV4}
            advertise_client_urls:       "http://{PRIVATE_IPV4}:2379"
            initial_advertise_peer_urls: "http://{PRIVATE_IPV4}:2380"
            # listen on both the official ports and the legacy ports
            # legacy ports can be omitted if your application doesn't depend on them
            listen_client_urls:          "http://0.0.0.0:2379"
            listen_peer_urls:            "http://{PRIVATE_IPV4}:2380"
            # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
            # specify the initial size of your cluster with ?size=X
            discovery:                   "https://discovery.etcd.io/<token>"
          ```
          <ul>
            <li>Paste configuration into "User Data"</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Storage Configuration
          <ul>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Tags
          <ul>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Create Key Pair
          <ul>
            <li>Choose a key of your choice, it will be added in addition to the one in the gist.</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Choose one or more of your existing Security Groups
          <ul>
            <li>"flatcar-testing" as above.</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Launch!
        </li>
      </ol>
    </div>
    <div class="tab-pane active" id="stable-manual">
      <p>We will be launching three instances, with a few parameters in the User Data, and selecting our security group.</p>
      <ol>
        <li>
        {% for region in site.data.stable_channel.amis %}
          {% if region.name == 'us-east-1' %}
            Open the <a href="https://console.aws.amazon.com/ec2/home?region={{region.name}}#launchAmi={{region.hvm}}" target="_blank">quick launch wizard</a> to boot {{region.hvm}} (amd64).
          {% endif %}
        {% endfor %}
        </li>
        <li>
          On the second page of the wizard, launch 3 servers to test our clustering
          <ul>
            <li>Number of instances: 3</li>
            <li>Click "Continue"</li>
          </ul>
        </li>
        <li>
          Next, we need to specify a discovery URL, which contains a unique token that allows us to find other hosts in our cluster. If you're launching your first machine, generate one at <a href="https://discovery.etcd.io/new?size=3">https://discovery.etcd.io/new?size=3</a>, configure the `?size=` to your initial cluster size and add it to the metadata. You should re-use this key for each machine in the cluster.
        </li>
        <li>
          Use <a href="https://docs.flatcar-linux.org/os/provisioning/#config-transpiler">ct</a> to convert the following configuration into an Ignition config, and back in the EC2 dashboard, paste it into the "User Data" field.
          ```yaml
          etcd:
            # All options get passed as command line flags to etcd.
            # Any information inside curly braces comes from the machine at boot time.
    
            # multi_region and multi_cloud deployments need to use {PUBLIC_IPV4}
            advertise_client_urls:       "http://{PRIVATE_IPV4}:2379"
            initial_advertise_peer_urls: "http://{PRIVATE_IPV4}:2380"
            # listen on both the official ports and the legacy ports
            # legacy ports can be omitted if your application doesn't depend on them
            listen_client_urls:          "http://0.0.0.0:2379"
            listen_peer_urls:            "http://{PRIVATE_IPV4}:2380"
            # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
            # specify the initial size of your cluster with ?size=X
            discovery:                   "https://discovery.etcd.io/<token>"
          ```
          <ul>
            <li>Paste configuration into "User Data"</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Storage Configuration
          <ul>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Tags
          <ul>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Create Key Pair
          <ul>
            <li>Choose a key of your choice, it will be added in addition to the one in the gist.</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Choose one or more of your existing Security Groups
          <ul>
            <li>"flatcar-testing" as above.</li>
            <li>"Continue"</li>
          </ul>
        </li>
        <li>
          Launch!
        </li>
      </ol>
    </div>
    

Installation from a VMDK image

One of the possible ways of installation is to import the generated VMDK Flatcar image as a snapshot. The image file will be in https://${CHANNEL}.release.flatcar-linux.net/${ARCH}-usr/${VERSION}/flatcar_production_ami_vmdk_image.vmdk.bz2. Make sure you download the signature (it’s available in https://${CHANNEL}.release.flatcar-linux.net/${ARCH}-usr/${VERSION}/flatcar_production_ami_vmdk_image.vmdk.bz2.sig) and check it before proceeding.

$ wget https://alpha.release.flatcar-linux.net/amd64-usr/current/flatcar_production_ami_vmdk_image.vmdk.bz2
$ wget https://alpha.release.flatcar-linux.net/amd64-usr/current/flatcar_production_ami_vmdk_image.vmdk.bz2.sig
$ gpg --verify flatcar_production_ami_vmdk_image.vmdk.bz2.sig
gpg: assuming signed data in 'flatcar_production_ami_vmdk_image.vmdk.bz2'
gpg: Signature made Thu 15 Mar 2018 10:27:57 AM CET
gpg:                using RSA key A621F1DA96C93C639506832D603443A1D0FC498C
gpg: Good signature from "Flatcar Buildbot (Official Builds) <[email protected]>" [ultimate]

Then, follow the instructions in Importing a Disk as a Snapshot Using VM Import/Export . You’ll need to upload the uncompressed vmdk file to S3.

After the snapshot is imported, you can go to “Snapshots” in the EC2 dashboard, and generate an AMI image from it. To make it work, use /dev/sda2 as the “Root device name” and you probably want to select “Hardware-assisted virtualization” as “Virtualization type”.

Using Flatcar Container Linux

Now that you have a machine booted it is time to play around. Check out the Flatcar Container Linux Quickstart guide or dig into more specific topics .