diff --git a/elements/ipa-extra-hardware-hp/README.rst b/elements/ipa-extra-hardware-hp/README.rst
new file mode 100644
index 0000000..9c9a3e6
--- /dev/null
+++ b/elements/ipa-extra-hardware-hp/README.rst
@@ -0,0 +1,13 @@
+=====================
+ipa-extra-hardware-hp
+=====================
+Installs HP specific software required for cardiff
+(`hardware `_) benchmarks
+
+* ``DIB_IPA_EXTRA_HARDWARE_CONREP_RPM``: URL of an RPM file that provides the ``conrep`` utility.
+ See ``_.
+ For example:
+
+ .. code-block::
+
+ export DIB_IPA_EXTRA_HARDWARE_CONREP_RPM="https://downloads.hpe.com/pub/softlib2/software1/pubsw-linux/p1201555626/v164819/rhel7/x86_64/hp-scripting-tools-11.40-9.rhel7.x86_64.rpm"
diff --git a/elements/ipa-extra-hardware-hp/element-deps b/elements/ipa-extra-hardware-hp/element-deps
new file mode 100644
index 0000000..af260b5
--- /dev/null
+++ b/elements/ipa-extra-hardware-hp/element-deps
@@ -0,0 +1,3 @@
+rpm
+proliant-tools
+ipa-extra-hardware
diff --git a/elements/ipa-extra-hardware-hp/environment.d/10-extra-rpms b/elements/ipa-extra-hardware-hp/environment.d/10-extra-rpms
new file mode 100644
index 0000000..bf073e2
--- /dev/null
+++ b/elements/ipa-extra-hardware-hp/environment.d/10-extra-rpms
@@ -0,0 +1,16 @@
+# RPMS needed for cardiff data collection:
+#
+# HP tools:
+# hp-scripting-tools - provides conrep for bios version, settings etc.
+
+# FIXME: RedHat family only
+
+CONREP_RPM=${DIB_IPA_EXTRA_HARDWARE_CONREP_RPM:-"https://downloads.hpe.com/pub/softlib2/software1/pubsw-linux/p1201555626/v164819/rhel7/x86_64/hp-scripting-tools-11.40-9.rhel7.x86_64.rpm"}
+DIB_RPMS_EXTRA="$CONREP_RPM"
+
+# prepend packages to the existing list if it has been defined
+if [ ! -z ${DIB_RPMS:+x} ]; then
+ export DIB_RPMS="$DIB_RPMS_EXTRA $DIB_RPMS"
+else
+ export DIB_RPMS="$DIB_RPMS_EXTRA"
+fi
diff --git a/elements/ipa-extra-hardware-hp/environment.d/10-proliant-tools b/elements/ipa-extra-hardware-hp/environment.d/10-proliant-tools
new file mode 100644
index 0000000..3eefed4
--- /dev/null
+++ b/elements/ipa-extra-hardware-hp/environment.d/10-proliant-tools
@@ -0,0 +1,2 @@
+# Use more up to date version of proliant tools
+export DIB_SSACLI_URL=${DIB_SSACLI_URL:-https://downloads.hpe.com/pub/softlib2/software1/pubsw-linux/p1857046646/v165910/ssacli-4.15-6.0.x86_64.rpm}
diff --git a/elements/ipa-extra-hardware-ram/README.rst b/elements/ipa-extra-hardware-ram/README.rst
new file mode 100644
index 0000000..520733b
--- /dev/null
+++ b/elements/ipa-extra-hardware-ram/README.rst
@@ -0,0 +1,12 @@
+======================
+ipa-extra-hardware-ram
+======================
+Collects DDR timing info on Intel processors.
+
+* ``DIB_DDR_TIMINGS_VERSION``: Version of ddr-timings to use.
+ See ``_.
+ For example:
+
+ .. code-block::
+
+ export DIB_DDR_TIMINGS_VERSION=1.0.0
diff --git a/elements/ipa-extra-hardware-ram/element-deps b/elements/ipa-extra-hardware-ram/element-deps
new file mode 100644
index 0000000..bdcea0a
--- /dev/null
+++ b/elements/ipa-extra-hardware-ram/element-deps
@@ -0,0 +1 @@
+ipa-extra-hardware
diff --git a/elements/ipa-extra-hardware-ram/finalise.d/99-ddr-timings-cleanup b/elements/ipa-extra-hardware-ram/finalise.d/99-ddr-timings-cleanup
new file mode 100755
index 0000000..c1304dc
--- /dev/null
+++ b/elements/ipa-extra-hardware-ram/finalise.d/99-ddr-timings-cleanup
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
+ set -x
+fi
+set -eu
+set -o pipefail
+
+install-packages -e gcc
+
+if $(which yum > /dev/null 2>&1); then
+
+ ${YUM:-yum} clean all
+
+ # Rebuilding the rpm database after removing packages will reduce
+ # its size
+ rpm --rebuilddb
+
+fi
diff --git a/elements/ipa-extra-hardware-ram/install.d/10-ddr-timings b/elements/ipa-extra-hardware-ram/install.d/10-ddr-timings
new file mode 100755
index 0000000..c356f61
--- /dev/null
+++ b/elements/ipa-extra-hardware-ram/install.d/10-ddr-timings
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if [ "${DIB_DEBUG_TRACE:-1}" -gt 0 ]; then
+ set -x
+fi
+set -u
+set -o pipefail
+
+VERSION=${DIB_DDR_TIMINGS_VERSION:-1.0.0}
+
+pushd /tmp
+curl -k -L -o ddr-timings.tar.gz https://github.com/stackhpc/ddr-timings/archive/$VERSION.tar.gz
+tar -xvf ddr-timings.tar.gz
+cd ddr-timings-$VERSION && make install
+popd
diff --git a/elements/ipa-extra-hardware-ram/package-installs.yaml b/elements/ipa-extra-hardware-ram/package-installs.yaml
new file mode 100644
index 0000000..5330c4a
--- /dev/null
+++ b/elements/ipa-extra-hardware-ram/package-installs.yaml
@@ -0,0 +1,2 @@
+gcc:
+make:
diff --git a/elements/ipa-extra-hardware/package-installs.yaml b/elements/ipa-extra-hardware/package-installs.yaml
index cc1a779..aca0b46 100644
--- a/elements/ipa-extra-hardware/package-installs.yaml
+++ b/elements/ipa-extra-hardware/package-installs.yaml
@@ -10,3 +10,4 @@ pciutils:
sdparm:
smartmontools:
sysbench:
+lsb_release:
diff --git a/elements/ipa-extra-hardware/pkg-map b/elements/ipa-extra-hardware/pkg-map
new file mode 100644
index 0000000..5ce398e
--- /dev/null
+++ b/elements/ipa-extra-hardware/pkg-map
@@ -0,0 +1,10 @@
+{
+ "family": {
+ "redhat": {
+ "lsb_release": "redhat-lsb-core"
+ }
+ },
+ "default": {
+ "lsb_release": ""
+ }
+}
diff --git a/elements/rpm/README.rst b/elements/rpm/README.rst
new file mode 100644
index 0000000..042ee40
--- /dev/null
+++ b/elements/rpm/README.rst
@@ -0,0 +1,12 @@
+===
+rpm
+===
+So you found a random RPM on the interwebs and now want to install it into
+your cloud image, panic not, this element's for you.
+
+* ``DIB_RPMS``: A whitespace separated list of rpms to install. This is a required parameter.
+ For example:
+
+ .. code-block::
+
+ export DIB_RPMS="https://example.org/first.rpm https://example.org/second.rpm"
diff --git a/elements/rpm/install.d/10-extra-rpms b/elements/rpm/install.d/10-extra-rpms
new file mode 100755
index 0000000..a03f1db
--- /dev/null
+++ b/elements/rpm/install.d/10-extra-rpms
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ "${DIB_DEBUG_TRACE:-1}" -gt 0 ]; then
+ set -x
+fi
+set -u
+set -o pipefail
+
+if $(which yum > /dev/null 2>&1); then
+ yum install -y $DIB_RPMS
+elif $(which zypper > /dev/null 2>&1); then
+ pushd /tmp
+ for pkg in DIB_RPMS; do
+ curl -O "$pkg"
+ zypper -n in $(basename "$pkg")
+ done
+ popd
+fi