diff --git a/app/watchdog.cpp b/app/watchdog.cpp
index 68af65c..51ba395 100644
--- a/app/watchdog.cpp
+++ b/app/watchdog.cpp
@@ -3,9 +3,9 @@
 #include "watchdog_service.hpp"
 
 #include <endian.h>
-#include <ipmid/api.h>
 
 #include <cstdint>
+#include <ipmid/api.hpp>
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/elog.hpp>
 #include <phosphor-logging/log.hpp>
diff --git a/app/watchdog.hpp b/app/watchdog.hpp
index 767a776..32d6f16 100644
--- a/app/watchdog.hpp
+++ b/app/watchdog.hpp
@@ -1,6 +1,6 @@
 #pragma once
 
-#include <ipmid/api.h>
+#include <ipmid/api.hpp>
 
 /** @brief The RESET watchdog IPMI command.
  *
diff --git a/app/watchdog_service.cpp b/app/watchdog_service.cpp
index e65ea63..284964d 100644
--- a/app/watchdog_service.cpp
+++ b/app/watchdog_service.cpp
@@ -1,8 +1,7 @@
 #include "watchdog_service.hpp"
 
-#include <ipmid/api.h>
-
 #include <exception>
+#include <ipmid/api.hpp>
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/elog.hpp>
 #include <phosphor-logging/log.hpp>
diff --git a/apphandler.cpp b/apphandler.cpp
index 1169e07..e1779bb 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
@@ -1,5 +1,4 @@
 #include <arpa/inet.h>
-#include <ipmid/api.h>
 #include <limits.h>
 #include <mapper.h>
 #include <systemd/sd-bus.h>
@@ -15,7 +14,6 @@
 #include <filesystem>
 #include <fstream>
 #include <ipmid/api.hpp>
-#include <ipmid/registration.hpp>
 #include <ipmid/types.hpp>
 #include <ipmid/utils.hpp>
 #include <memory>
diff --git a/chassishandler.cpp b/chassishandler.cpp
index 7ac7b7d..ef760d5 100644
--- a/chassishandler.cpp
+++ b/chassishandler.cpp
@@ -6,7 +6,6 @@
 
 #include <arpa/inet.h>
 #include <endian.h>
-#include <ipmid/api.h>
 #include <limits.h>
 #include <mapper.h>
 #include <netinet/in.h>
@@ -17,6 +16,7 @@
 #include <filesystem>
 #include <fstream>
 #include <future>
+#include <ipmid/api.hpp>
 #include <ipmid/types.hpp>
 #include <ipmid/utils.hpp>
 #include <map>
diff --git a/dcmihandler.cpp b/dcmihandler.cpp
index cb14005..3188585 100644
--- a/dcmihandler.cpp
+++ b/dcmihandler.cpp
@@ -4,11 +4,10 @@
 
 #include "user_channel/channel_layer.hpp"
 
-#include <ipmid/api.h>
-
 #include <bitset>
 #include <cmath>
 #include <fstream>
+#include <ipmid/api.hpp>
 #include <ipmid/utils.hpp>
 #include <nlohmann/json.hpp>
 #include <phosphor-logging/elog-errors.hpp>
diff --git a/globalhandler.cpp b/globalhandler.cpp
index e268fd1..27409c2 100644
--- a/globalhandler.cpp
+++ b/globalhandler.cpp
@@ -1,7 +1,6 @@
 #include "globalhandler.hpp"
 
-#include <ipmid/api.h>
-
+#include <ipmid/api.hpp>
 #include <ipmid/utils.hpp>
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/log.hpp>
diff --git a/groupext.cpp b/groupext.cpp
index dbfade4..5b71dde 100644
--- a/groupext.cpp
+++ b/groupext.cpp
@@ -1,6 +1,5 @@
-#include <ipmid/api.h>
-
 #include <cstdio>
+#include <ipmid/api.hpp>
 
 #define GRPEXT_GET_GROUP_CMD 0
 void register_netfn_groupext_functions() __attribute__((constructor));
diff --git a/include/Makefile.am b/include/Makefile.am
index a3051dd..b7c303a 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1,12 +1,12 @@
 nobase_include_HEADERS = \
 	ipmid/api.hpp \
+	ipmid/api-types.hpp \
 	ipmid/filter.hpp \
 	ipmid/handler.hpp \
 	ipmid/message.hpp \
 	ipmid/message/pack.hpp \
 	ipmid/message/types.hpp \
 	ipmid/message/unpack.hpp \
-	ipmid/registration.hpp \
 	ipmid/api.h \
 	ipmid/iana.hpp \
 	ipmid/oemopenbmc.hpp \
diff --git a/include/ipmid/api-types.hpp b/include/ipmid/api-types.hpp
new file mode 100644
index 0000000..c718ff4
--- /dev/null
+++ b/include/ipmid/api-types.hpp
@@ -0,0 +1,456 @@
+/*
+ * Copyright © 2018 Intel Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#pragma once
+#include <cstdint>
+#include <ipmid/iana.hpp>
+#include <optional>
+#include <tuple>
+
+namespace ipmi
+{
+
+using Iana = oem::Number;
+
+using Group = uint8_t;
+constexpr Group groupPICMG = 0x00;
+constexpr Group groupDMTG = 0x01;
+constexpr Group groupSSI = 0x02;
+constexpr Group groupVSO = 0x03;
+constexpr Group groupDCMI = 0xDC;
+
+/*
+ * Set the priority as the lowest number that is necessary so
+ * it is possible that others can override it if desired.
+ * This may be linked to what level of integration the handler
+ * is being created at.
+ */
+constexpr int prioOpenBmcBase = 10;
+constexpr int prioOemBase = 20;
+constexpr int prioOdmBase = 30;
+constexpr int prioCustomBase = 40;
+constexpr int prioMax = 50;
+
+/*
+ * Channel IDs pulled from the IPMI 2.0 specification
+ */
+constexpr int channelPrimaryIpmb = 0x00;
+// 0x01-0x0B Implementation specific
+// Implementation specific channel numbers are specified
+// by a configuration file external to ipmid
+// 0x0C-0x0D reserved
+constexpr int channelCurrentIface = 0x0E; // 'Present I/F'
+constexpr int channelSystemIface = 0x0F;
+
+/*
+ * Specifies the minimum privilege level required to execute the command
+ * This means the command can be executed at a given privilege level or higher
+ * privilege level. Those commands which can be executed via system interface
+ * only should use SYSTEM_INTERFACE
+ */
+enum class Privilege : uint8_t
+{
+    None = 0x00,
+    Callback,
+    User,
+    Operator,
+    Admin,
+    Oem,
+};
+
+// IPMI Net Function number as specified by IPMI V2.0 spec.
+using NetFn = uint8_t;
+
+// IPMI Command for a Net Function number as specified by IPMI V2.0 spec.
+using Cmd = uint8_t;
+
+// ipmi function return the status code
+using Cc = uint8_t;
+
+// IPMI 2.0 and DCMI 1.5 standard commands, namespaced by NetFn
+// OEM and non-standard commands should be defined where they are used
+namespace app
+{
+// 0x00 reserved
+constexpr Cmd cmdGetDeviceId = 0x01;
+constexpr Cmd cmdColdReset = 0x02;
+constexpr Cmd cmdWarmReset = 0x03;
+constexpr Cmd cmdGetSelfTestResults = 0x04;
+constexpr Cmd cmdManufacturingTestOn = 0x05;
+constexpr Cmd cmdSetAcpiPowerState = 0x06;
+constexpr Cmd cmdGetAcpiPowerState = 0x07;
+constexpr Cmd cmdGetDeviceGuid = 0x08;
+constexpr Cmd cmdGetNetFnSupport = 0x09;
+constexpr Cmd cmdGetCmdSupport = 0x0A;
+constexpr Cmd cmdGetCmdSubFnSupport = 0x0B;
+constexpr Cmd cmdGetConfigurableCmds = 0x0C;
+constexpr Cmd cmdGetConfigurableCmdSubFns = 0x0D;
+// 0x0E-0x21 unassigned
+constexpr Cmd cmdResetWatchdogTimer = 0x22;
+// 0x23 unassigned
+constexpr Cmd cmdSetWatchdogTimer = 0x24;
+constexpr Cmd cmdGetWatchdogTimer = 0x25;
+// 0x26-0x2D unassigned
+constexpr Cmd cmdSetBmcGlobalEnables = 0x2E;
+constexpr Cmd cmdGetBmcGlobalEnables = 0x2F;
+constexpr Cmd cmdClearMessageFlags = 0x30;
+constexpr Cmd cmdGetMessageFlags = 0x31;
+constexpr Cmd cmdEnableMessageChannelRcv = 0x32;
+constexpr Cmd cmdGetMessage = 0x33;
+constexpr Cmd cmdSendMessage = 0x34;
+constexpr Cmd cmdReadEventMessageBuffer = 0x35;
+constexpr Cmd cmdGetBtIfaceCapabilities = 0x36;
+constexpr Cmd cmdGetSystemGuid = 0x37;
+constexpr Cmd cmdGetChannelAuthCapabilities = 0x38;
+constexpr Cmd cmdGetSessionChallenge = 0x39;
+constexpr Cmd cmdActivateSession = 0x3A;
+constexpr Cmd cmdSetSessionPrivilegeLevel = 0x3B;
+constexpr Cmd cmdCloseSession = 0x3C;
+constexpr Cmd cmdGetSessionInfo = 0x3D;
+// 0x3E unassigned
+constexpr Cmd cmdGetAuthCode = 0x3F;
+constexpr Cmd cmdSetChannelAccess = 0x40;
+constexpr Cmd cmdGetChannelAccess = 0x41;
+constexpr Cmd cmdGetChannelInfoCommand = 0x42;
+constexpr Cmd cmdSetUserAccessCommand = 0x43;
+constexpr Cmd cmdGetUserAccessCommand = 0x44;
+constexpr Cmd cmdSetUserName = 0x45;
+constexpr Cmd cmdGetUserNameCommand = 0x46;
+constexpr Cmd cmdSetUserPasswordCommand = 0x47;
+constexpr Cmd cmdActivatePayload = 0x48;
+constexpr Cmd cmdDeactivatePayload = 0x49;
+constexpr Cmd cmdGetPayloadActivationStatus = 0x4A;
+constexpr Cmd cmdGetPayloadInstanceInfo = 0x4B;
+constexpr Cmd cmdSetUserPayloadAccess = 0x4C;
+constexpr Cmd cmdGetUserPayloadAccess = 0x4D;
+constexpr Cmd cmdGetChannelPayloadSupport = 0x4E;
+constexpr Cmd cmdGetChannelPayloadVersion = 0x4F;
+constexpr Cmd cmdGetChannelOemPayloadInfo = 0x50;
+// 0x51 unassigned
+constexpr Cmd cmdMasterWriteRead = 0x52;
+// 0x53 unassigned
+constexpr Cmd cmdGetChannelCipherSuites = 0x54;
+constexpr Cmd cmdSuspendResumePayloadEnc = 0x55;
+constexpr Cmd cmdSetChannelSecurityKeys = 0x56;
+constexpr Cmd cmdGetSystemIfCapabilities = 0x57;
+constexpr Cmd cmdSetSystemInfoParameters = 0x58;
+constexpr Cmd cmdGetSystemInfoParameters = 0x59;
+// 0x5A-0x5F unassigned
+constexpr Cmd cmdSetCommandEnables = 0x60;
+constexpr Cmd cmdGetCommandEnables = 0x61;
+constexpr Cmd cmdSetCommandSubFnEnables = 0x62;
+constexpr Cmd cmdGetCommandSubFnEnables = 0x63;
+constexpr Cmd cmdGetOemNetFnIanaSupport = 0x64;
+// 0x65-0xff unassigned
+} // namespace app
+
+namespace chassis
+{
+constexpr Cmd cmdGetChassisCapabilities = 0x00;
+constexpr Cmd cmdGetChassisStatus = 0x01;
+constexpr Cmd cmdChassisControl = 0x02;
+constexpr Cmd cmdChassisReset = 0x03;
+constexpr Cmd cmdChassisIdentify = 0x04;
+constexpr Cmd cmdSetChassisCapabilities = 0x05;
+constexpr Cmd cmdSetPowerRestorePolicy = 0x06;
+constexpr Cmd cmdGetSystemRestartCause = 0x07;
+constexpr Cmd cmdSetSystemBootOptions = 0x08;
+constexpr Cmd cmdGetSystemBootOptions = 0x09;
+constexpr Cmd cmdSetFrontPanelButtonEnables = 0x0A;
+constexpr Cmd cmdSetPowerCycleInterval = 0x0B;
+// 0x0C-0x0E unassigned
+constexpr Cmd cmdGetPohCounter = 0x0F;
+// 0x10-0xFF unassigned
+} // namespace chassis
+
+namespace sensor_event
+{
+constexpr Cmd cmdSetEventReceiver = 0x00;
+constexpr Cmd cmdGetEventReceiver = 0x01;
+constexpr Cmd cmdPlatformEvent = 0x02;
+// 0x03-0x0F unassigned
+constexpr Cmd cmdGetPefCapabilities = 0x10;
+constexpr Cmd cmdArmPefPostponeTimer = 0x11;
+constexpr Cmd cmdSetPefConfigurationParams = 0x12;
+constexpr Cmd cmdGetPefConfigurationParams = 0x13;
+constexpr Cmd cmdSetLastProcessedEventId = 0x14;
+constexpr Cmd cmdGetLastProcessedEventId = 0x15;
+constexpr Cmd cmdAlertImmediate = 0x16;
+constexpr Cmd cmdPetAcknowledge = 0x17;
+constexpr Cmd cmdGetDeviceSdrInfo = 0x20;
+constexpr Cmd cmdGetDeviceSdr = 0x21;
+constexpr Cmd cmdReserveDeviceSdrRepository = 0x22;
+constexpr Cmd cmdGetSensorReadingFactors = 0x23;
+constexpr Cmd cmdSetSensorHysteresis = 0x24;
+constexpr Cmd cmdGetSensorHysteresis = 0x25;
+constexpr Cmd cmdSetSensorThreshold = 0x26;
+constexpr Cmd cmdGetSensorThreshold = 0x27;
+constexpr Cmd cmdSetSensorEventEnable = 0x28;
+constexpr Cmd cmdGetSensorEventEnable = 0x29;
+constexpr Cmd cmdRearmSensorEvents = 0x2A;
+constexpr Cmd cmdGetSensorEventStatus = 0x2B;
+constexpr Cmd cmdGetSensorReading = 0x2D;
+constexpr Cmd cmdSetSensorType = 0x2E;
+constexpr Cmd cmdGetSensorType = 0x2F;
+constexpr Cmd cmdSetSensorReadingAndEvtSts = 0x30;
+// 0x31-0xFF unassigned
+} // namespace sensor_event
+
+namespace storage
+{
+// 0x00-0x0F unassigned
+constexpr Cmd cmdGetFruInventoryAreaInfo = 0x10;
+constexpr Cmd cmdReadFruData = 0x11;
+constexpr Cmd cmdWriteFruData = 0x12;
+// 0x13-0x1F unassigned
+constexpr Cmd cmdGetSdrRepositoryInfo = 0x20;
+constexpr Cmd cmdGetSdrRepositoryAllocInfo = 0x21;
+constexpr Cmd cmdReserveSdrRepository = 0x22;
+constexpr Cmd cmdGetSdr = 0x23;
+constexpr Cmd cmdAddSdr = 0x24;
+constexpr Cmd cmdPartialAddSdr = 0x25;
+constexpr Cmd cmdDeleteSdr = 0x26;
+constexpr Cmd cmdClearSdrRepository = 0x27;
+constexpr Cmd cmdGetSdrRepositoryTime = 0x28;
+constexpr Cmd cmdSetSdrRepositoryTime = 0x29;
+constexpr Cmd cmdEnterSdrRepoUpdateMode = 0x2A;
+constexpr Cmd cmdExitSdrReposUpdateMode = 0x2B;
+constexpr Cmd cmdRunInitializationAgent = 0x2C;
+// 0x2D-0x3F unassigned
+constexpr Cmd cmdGetSelInfo = 0x40;
+constexpr Cmd cmdGetSelAllocationInfo = 0x41;
+constexpr Cmd cmdReserveSel = 0x42;
+constexpr Cmd cmdGetSelEntry = 0x43;
+constexpr Cmd cmdAddSelEntry = 0x44;
+constexpr Cmd cmdPartialAddSelEntry = 0x45;
+constexpr Cmd cmdDeleteSelEntry = 0x46;
+constexpr Cmd cmdClearSel = 0x47;
+constexpr Cmd cmdGetSelTime = 0x48;
+constexpr Cmd cmdSetSelTime = 0x49;
+constexpr Cmd cmdGetAuxiliaryLogStatus = 0x5A;
+constexpr Cmd cmdSetAuxiliaryLogStatus = 0x5B;
+constexpr Cmd cmdGetSelTimeUtcOffset = 0x5C;
+constexpr Cmd cmdSetSelTimeUtcOffset = 0x5D;
+// 0x5E-0xFF unassigned
+} // namespace storage
+
+namespace transport
+{
+constexpr Cmd cmdSetLanConfigParameters = 0x01;
+constexpr Cmd cmdGetLanConfigParameters = 0x02;
+constexpr Cmd cmdSuspendBmcArps = 0x03;
+constexpr Cmd cmdGetIpUdpRmcpStatistics = 0x04;
+constexpr Cmd cmdSetSerialModemConfig = 0x10;
+constexpr Cmd cmdGetSerialModemConfig = 0x11;
+constexpr Cmd cmdSetSerialModemMux = 0x12;
+constexpr Cmd cmdGetTapResponseCodes = 0x13;
+constexpr Cmd cmdSetPppUdpProxyTransmitData = 0x14;
+constexpr Cmd cmdGetPppUdpProxyTransmitData = 0x15;
+constexpr Cmd cmdSendPppUdpProxyPacket = 0x16;
+constexpr Cmd cmdGetPppUdpProxyReceiveData = 0x17;
+constexpr Cmd cmdSerialModemConnActive = 0x18;
+constexpr Cmd cmdCallback = 0x19;
+constexpr Cmd cmdSetUserCallbackOptions = 0x1A;
+constexpr Cmd cmdGetUserCallbackOptions = 0x1B;
+constexpr Cmd cmdSetSerialRoutingMux = 0x1C;
+constexpr Cmd cmdSolActivating = 0x20;
+constexpr Cmd cmdSetSolConfigParameters = 0x21;
+constexpr Cmd cmdGetSolConfigParameters = 0x22;
+constexpr Cmd cmdForwardedCommand = 0x30;
+constexpr Cmd cmdSetForwardedCommands = 0x31;
+constexpr Cmd cmdGetForwardedCommands = 0x32;
+constexpr Cmd cmdEnableForwardedCommands = 0x33;
+} // namespace transport
+
+namespace bridge
+{
+constexpr Cmd cmdGetBridgeState = 0x00;
+constexpr Cmd cmdSetBridgeState = 0x01;
+constexpr Cmd cmdGetIcmbAddress = 0x02;
+constexpr Cmd cmdSetIcmbAddress = 0x03;
+constexpr Cmd cmdSetBridgeProxyAddress = 0x04;
+constexpr Cmd cmdGetBridgeStatistics = 0x05;
+constexpr Cmd cmdGetIcmbCapabilities = 0x06;
+constexpr Cmd cmdClearBridgeStatistics = 0x08;
+constexpr Cmd cmdGetBridgeProxyAddress = 0x09;
+constexpr Cmd cmdGetIcmbConnectorInfo = 0x0A;
+constexpr Cmd cmdGetIcmbConnectionId = 0x0B;
+constexpr Cmd cmdSendIcmbConnectionId = 0x0C;
+constexpr Cmd cmdPrepareForDiscovery = 0x10;
+constexpr Cmd cmdGetAddresses = 0x11;
+constexpr Cmd cmdSetDiscovered = 0x12;
+constexpr Cmd cmdGetChassisDeviceId = 0x13;
+constexpr Cmd cmdSetChassisDeviceId = 0x14;
+constexpr Cmd cmdBridgeRequest = 0x20;
+constexpr Cmd cmdBridgeMessage = 0x21;
+// 0x22-0x2F unassigned
+constexpr Cmd cmdGetEventCount = 0x30;
+constexpr Cmd cmdSetEventDestination = 0x31;
+constexpr Cmd cmdSetEventReceptionState = 0x32;
+constexpr Cmd cmdSendIcmbEventMessage = 0x33;
+constexpr Cmd cmdGetEventDestination = 0x34;
+constexpr Cmd cmdGetEventReceptionState = 0x35;
+// 0xC0-0xFE OEM Commands
+constexpr Cmd cmdErrorReport = 0xFF;
+} // namespace bridge
+
+namespace dcmi
+{
+constexpr Cmd cmdGetDcmiCapabilitiesInfo = 0x01;
+constexpr Cmd cmdGetPowerReading = 0x02;
+constexpr Cmd cmdGetPowerLimit = 0x03;
+constexpr Cmd cmdSetPowerLimit = 0x04;
+constexpr Cmd cmdActDeactivatePwrLimit = 0x05;
+constexpr Cmd cmdGetAssetTag = 0x06;
+constexpr Cmd cmdGetDcmiSensorInfo = 0x07;
+constexpr Cmd cmdSetAssetTag = 0x08;
+constexpr Cmd cmdGetMgmtCntlrIdString = 0x09;
+constexpr Cmd cmdSetMgmtCntlrIdString = 0x0A;
+constexpr Cmd cmdSetThermalLimit = 0x0B;
+constexpr Cmd cmdGetThermalLimit = 0x0C;
+constexpr Cmd cmdGetTemperatureReadings = 0x10;
+constexpr Cmd cmdSetDcmiConfigParameters = 0x12;
+constexpr Cmd cmdGetDcmiConfigParameters = 0x13;
+} // namespace dcmi
+
+// These are the command network functions, the response
+// network functions are the function + 1. So to determine
+// the proper network function which issued the command
+// associated with a response, subtract 1.
+// Note: these will be left shifted when combined with the LUN
+constexpr NetFn netFnChassis = 0x00;
+constexpr NetFn netFnBridge = 0x02;
+constexpr NetFn netFnSensor = 0x04;
+constexpr NetFn netFnApp = 0x06;
+constexpr NetFn netFnFirmware = 0x08;
+constexpr NetFn netFnStorage = 0x0A;
+constexpr NetFn netFnTransport = 0x0C;
+// reserved 0Eh..28h
+constexpr NetFn netFnGroup = 0x2C;
+constexpr NetFn netFnOem = 0x2E;
+constexpr NetFn netFnOemOne = 0x30;
+constexpr NetFn netFnOemTwo = 0x32;
+constexpr NetFn netFnOemThree = 0x34;
+constexpr NetFn netFnOemFour = 0x36;
+constexpr NetFn netFnOemFive = 0x38;
+constexpr NetFn netFnOemSix = 0x3A;
+constexpr NetFn netFnOemSeven = 0x3C;
+constexpr NetFn netFnOemEight = 0x3E;
+
+// IPMI commands for net functions. Callbacks using this should be careful to
+// parse arguments to the sub-functions and can take advantage of the built-in
+// message handling mechanism to create custom routing
+constexpr Cmd cmdWildcard = 0xFF;
+
+// IPMI standard completion codes specified by the IPMI V2.0 spec.
+//
+// This might have been an enum class, but that would make it hard for
+// OEM- and command-specific completion codes to be added elsewhere.
+//
+// Custom completion codes can be defined in individual modules for
+// command specific errors in the 0x80-0xBE range
+//
+// Alternately, OEM completion codes are in the 0x01-0x7E range
+constexpr Cc ccSuccess = 0x00;
+constexpr Cc ccBusy = 0xC0;
+constexpr Cc ccInvalidCommand = 0xC1;
+constexpr Cc ccInvalidCommandOnLun = 0xC2;
+constexpr Cc ccTimeout = 0xC2;
+constexpr Cc ccOutOfSpace = 0xC2;
+constexpr Cc ccInvalidReservationId = 0xC5;
+constexpr Cc ccReqDataTruncated = 0xC6;
+constexpr Cc ccReqDataLenInvalid = 0xC7;
+constexpr Cc ccReqDataLenExceeded = 0xC8;
+constexpr Cc ccParmOutOfRange = 0xC9;
+constexpr Cc ccRetBytesUnavailable = 0xCA;
+constexpr Cc ccSensorInvalid = 0xCB;
+constexpr Cc ccInvalidFieldRequest = 0xCC;
+constexpr Cc ccIllegalCommand = 0xCD;
+constexpr Cc ccResponseError = 0xCE;
+constexpr Cc ccDuplicateRequest = 0xCF;
+constexpr Cc ccCmdFailSdrMode = 0xD0;
+constexpr Cc ccCmdFailFwUpdMode = 0xD1;
+constexpr Cc ccCmdFailInitAgent = 0xD2;
+constexpr Cc ccDestinationUnavailable = 0xD3;
+constexpr Cc ccInsufficientPrivilege = 0xD4;
+constexpr Cc ccCommandNotAvailable = 0xD5;
+constexpr Cc ccCommandDisabled = 0xD6;
+constexpr Cc ccUnspecifiedError = 0xFF;
+
+/* ipmi often has two return types:
+ * 1. Failure: CC is non-zero; no trailing data
+ * 2. Success: CC is zero; trailing data (usually a fixed type)
+ *
+ * using ipmi::response(cc, ...), it will automatically always pack
+ * the correct type for the response without having to explicitly type out all
+ * the parameters that the function would return.
+ *
+ * To enable this feature, you just define the ipmi function as returning an
+ * ipmi::RspType which has the optional trailing data built in, with your types
+ * defined as parameters.
+ */
+
+template <typename... RetTypes>
+using RspType = std::tuple<ipmi::Cc, std::optional<std::tuple<RetTypes...>>>;
+
+/**
+ * @brief helper function to create an IPMI response tuple
+ *
+ * IPMI handlers all return a tuple with two parts: a completion code and an
+ * optional tuple containing the rest of the data to return. This helper
+ * function makes it easier by constructing that out of an arbitrary number of
+ * arguments.
+ *
+ * @param cc - the completion code for the response
+ * @param args... - the optional list of values to return
+ *
+ * @return a standard IPMI return type (as described above)
+ */
+template <typename... Args>
+static inline auto response(ipmi::Cc cc, Args&&... args)
+{
+    return std::make_tuple(cc, std::make_optional(std::make_tuple(args...)));
+}
+static inline auto response(ipmi::Cc cc)
+{
+    return std::make_tuple(cc, std::nullopt);
+}
+
+/**
+ * @brief helper function to create an IPMI success response tuple
+ *
+ * IPMI handlers all return a tuple with two parts: a completion code and an
+ * optional tuple containing the rest of the data to return. This helper
+ * function makes it easier by constructing that out of an arbitrary number of
+ * arguments. Because it is a success response, this automatically packs
+ * the completion code, without needing to explicitly pass it in.
+ *
+ * @param args... - the optional list of values to return
+ *
+ * @return a standard IPMI return type (as described above)
+ */
+template <typename... Args>
+static inline auto responseSuccess(Args&&... args)
+{
+    return std::make_tuple(ipmi::ccSuccess,
+                           std::make_optional(std::make_tuple(args...)));
+}
+static inline auto responseSuccess()
+{
+    return std::make_tuple(ipmi::ccSuccess, std::nullopt);
+}
+
+} // namespace ipmi
diff --git a/include/ipmid/api.hpp b/include/ipmid/api.hpp
index b825796..f4cbf13 100644
--- a/include/ipmid/api.hpp
+++ b/include/ipmid/api.hpp
@@ -17,210 +17,18 @@
 #pragma once
 
 #define ALLOW_DEPRECATED_API 1
+// make it possible to ONLY include api.hpp during the transition
+#ifdef ALLOW_DEPRECATED_API
+#include <ipmid/api.h>
+#endif
 
-#include <ipmid/iana.hpp>
+#include <ipmid/api-types.hpp>
+#include <ipmid/filter.hpp>
+#include <ipmid/handler.hpp>
 #include <ipmid/message/types.hpp>
-#include <optional>
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/asio/object_server.hpp>
 
-/* NOTE:
- *
- * This is intended for native C++ use. For the legacy C api, include
- * ipmid-api.h for a reduced functionality. Note that the C api is now marked
- * as deprecated and will be removed once all the internal users of it have
- * been updated to use the new C++ api.
- */
-
-namespace ipmi
-{
-
-using Iana = oem::Number;
-
-using Group = uint8_t;
-constexpr Group groupPICMG = 0x00;
-constexpr Group groupDMTG = 0x01;
-constexpr Group groupSSI = 0x02;
-constexpr Group groupVSO = 0x03;
-constexpr Group groupDCMI = 0xDC;
-
-/*
- * Set the priority as the lowest number that is necessary so
- * it is possible that others can override it if desired.
- * This may be linked to what level of integration the handler
- * is being created at.
- */
-constexpr int prioOpenBmcBase = 10;
-constexpr int prioOemBase = 20;
-constexpr int prioOdmBase = 30;
-constexpr int prioCustomBase = 40;
-constexpr int prioMax = 50;
-
-/*
- * Channel IDs pulled from the IPMI 2.0 specification
- */
-constexpr int channelPrimaryIpmb = 0x00;
-// 0x01-0x0B Implementation specific
-// Implementation specific channel numbers are specified
-// by a configuration file external to ipmid
-// 0x0C-0x0D reserved
-constexpr int channelCurrentIface = 0x0E; // 'Present I/F'
-constexpr int channelSystemIface = 0x0F;
-
-/*
- * Specifies the minimum privilege level required to execute the command
- * This means the command can be executed at a given privilege level or higher
- * privilege level. Those commands which can be executed via system interface
- * only should use SYSTEM_INTERFACE
- */
-enum class Privilege : uint8_t
-{
-    None = 0x00,
-    Callback,
-    User,
-    Operator,
-    Admin,
-    Oem,
-};
-
-// IPMI Net Function number as specified by IPMI V2.0 spec.
-using NetFn = uint8_t;
-
-// IPMI Command for a Net Function number as specified by IPMI V2.0 spec.
-using Cmd = uint8_t;
-
-// ipmi function return the status code
-using Cc = uint8_t;
-
-// These are the command network functions, the response
-// network functions are the function + 1. So to determine
-// the proper network function which issued the command
-// associated with a response, subtract 1.
-// Note: these will be left shifted when combined with the LUN
-constexpr NetFn netFnChassis = 0x00;
-constexpr NetFn netFnBridge = 0x02;
-constexpr NetFn netFnSensor = 0x04;
-constexpr NetFn netFnApp = 0x06;
-constexpr NetFn netFnFirmware = 0x08;
-constexpr NetFn netFnStorage = 0x0A;
-constexpr NetFn netFnTransport = 0x0C;
-// reserved 0Eh..28h
-constexpr NetFn netFnGroup = 0x2C;
-constexpr NetFn netFnOem = 0x2E;
-constexpr NetFn netFnOemOne = 0x30;
-constexpr NetFn netFnOemTwo = 0x32;
-constexpr NetFn netFnOemThree = 0x34;
-constexpr NetFn netFnOemFour = 0x36;
-constexpr NetFn netFnOemFive = 0x38;
-constexpr NetFn netFnOemSix = 0x3A;
-constexpr NetFn netFnOemSeven = 0x3C;
-constexpr NetFn netFnOemEight = 0x3E;
-
-// IPMI commands for net functions. Callbacks using this should be careful to
-// parse arguments to the sub-functions and can take advantage of the built-in
-// message handling mechanism to create custom routing
-constexpr Cmd cmdWildcard = 0xFF;
-
-// IPMI standard completion codes specified by the IPMI V2.0 spec.
-//
-// This might have been an enum class, but that would make it hard for
-// OEM- and command-specific completion codes to be added elsewhere.
-//
-// Custom completion codes can be defined in individual modules for
-// command specific errors in the 0x80-0xBE range
-//
-// Alternately, OEM completion codes are in the 0x01-0x7E range
-constexpr Cc ccSuccess = 0x00;
-constexpr Cc ccBusy = 0xC0;
-constexpr Cc ccInvalidCommand = 0xC1;
-constexpr Cc ccInvalidCommandOnLun = 0xC2;
-constexpr Cc ccTimeout = 0xC2;
-constexpr Cc ccOutOfSpace = 0xC2;
-constexpr Cc ccInvalidReservationId = 0xC5;
-constexpr Cc ccReqDataTruncated = 0xC6;
-constexpr Cc ccReqDataLenInvalid = 0xC7;
-constexpr Cc ccReqDataLenExceeded = 0xC8;
-constexpr Cc ccParmOutOfRange = 0xC9;
-constexpr Cc ccRetBytesUnavailable = 0xCA;
-constexpr Cc ccSensorInvalid = 0xCB;
-constexpr Cc ccInvalidFieldRequest = 0xCC;
-constexpr Cc ccIllegalCommand = 0xCD;
-constexpr Cc ccResponseError = 0xCE;
-constexpr Cc ccDuplicateRequest = 0xCF;
-constexpr Cc ccCmdFailSdrMode = 0xD0;
-constexpr Cc ccCmdFailFwUpdMode = 0xD1;
-constexpr Cc ccCmdFailInitAgent = 0xD2;
-constexpr Cc ccDestinationUnavailable = 0xD3;
-constexpr Cc ccInsufficientPrivilege = 0xD4;
-constexpr Cc ccCommandNotAvailable = 0xD5;
-constexpr Cc ccCommandDisabled = 0xD6;
-constexpr Cc ccUnspecifiedError = 0xFF;
-
-/* ipmi often has two return types:
- * 1. Failure: CC is non-zero; no trailing data
- * 2. Success: CC is zero; trailing data (usually a fixed type)
- *
- * using ipmi::response(cc, ...), it will automatically always pack
- * the correct type for the response without having to explicitly type out all
- * the parameters that the function would return.
- *
- * To enable this feature, you just define the ipmi function as returning an
- * ipmi::RspType which has the optional trailing data built in, with your types
- * defined as parameters.
- */
-
-template <typename... RetTypes>
-using RspType = std::tuple<ipmi::Cc, std::optional<std::tuple<RetTypes...>>>;
-
-/**
- * @brief helper function to create an IPMI response tuple
- *
- * IPMI handlers all return a tuple with two parts: a completion code and an
- * optional tuple containing the rest of the data to return. This helper
- * function makes it easier by constructing that out of an arbitrary number of
- * arguments.
- *
- * @param cc - the completion code for the response
- * @param args... - the optional list of values to return
- *
- * @return a standard IPMI return type (as described above)
- */
-template <typename... Args>
-static inline auto response(ipmi::Cc cc, Args&&... args)
-{
-    return std::make_tuple(cc, std::make_optional(std::make_tuple(args...)));
-}
-static inline auto response(ipmi::Cc cc)
-{
-    return std::make_tuple(cc, std::nullopt);
-}
-
-/**
- * @brief helper function to create an IPMI success response tuple
- *
- * IPMI handlers all return a tuple with two parts: a completion code and an
- * optional tuple containing the rest of the data to return. This helper
- * function makes it easier by constructing that out of an arbitrary number of
- * arguments. Because it is a success response, this automatically packs
- * the completion code, without needing to explicitly pass it in.
- *
- * @param args... - the optional list of values to return
- *
- * @return a standard IPMI return type (as described above)
- */
-template <typename... Args>
-static inline auto responseSuccess(Args&&... args)
-{
-    return std::make_tuple(ipmi::ccSuccess,
-                           std::make_optional(std::make_tuple(args...)));
-}
-static inline auto responseSuccess()
-{
-    return std::make_tuple(ipmi::ccSuccess, std::nullopt);
-}
-
-} // namespace ipmi
-
 // any client can interact with the main asio context
 std::shared_ptr<boost::asio::io_context> getIoContext();
 
diff --git a/include/ipmid/filter.hpp b/include/ipmid/filter.hpp
index 3cd5d21..950e3c3 100644
--- a/include/ipmid/filter.hpp
+++ b/include/ipmid/filter.hpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <boost/callable_traits.hpp>
 #include <cstdint>
-#include <ipmid/api.hpp>
+#include <ipmid/api-types.hpp>
 #include <ipmid/message.hpp>
 #include <memory>
 #include <tuple>
@@ -91,4 +91,45 @@
     return makeFilter(std::forward<Filter>(lFilter));
 }
 
+namespace impl
+{
+
+// IPMI command filter registration implementation
+void registerFilter(int prio, ::ipmi::FilterBase::ptr filter);
+
+} // namespace impl
+
+/**
+ * @brief IPMI command filter registration function
+ *
+ * This function should be used to register IPMI command filter functions.
+ * This function just passes the callback to makeFilter, which creates a
+ * wrapper functor object that ultimately calls the callback.
+ *
+ * Filters are called with a ipmi::message::Request shared_ptr on all IPMI
+ * commands in priority order and each filter has the opportunity to reject the
+ * command (by returning an IPMI error competion code.) If all the filters
+ * return success, the actual IPMI command will be executed. Filters can reject
+ * the command for any reason, based on system state, the context, the command
+ * payload, etc.
+ *
+ * @param prio - priority at which to register; see api.hpp
+ * @param filter - the callback function that will handle this request
+ *
+ * @return bool - success of registering the handler
+ */
+template <typename Filter>
+void registerFilter(int prio, Filter&& filter)
+{
+    auto f = ipmi::makeFilter(std::forward<Filter>(filter));
+    impl::registerFilter(prio, f);
+}
+
+template <typename Filter>
+void registerFilter(int prio, const Filter& filter)
+{
+    auto f = ipmi::makeFilter(filter);
+    impl::registerFilter(prio, f);
+}
+
 } // namespace ipmi
diff --git a/include/ipmid/handler.hpp b/include/ipmid/handler.hpp
index 17beb42..1421c3d 100644
--- a/include/ipmid/handler.hpp
+++ b/include/ipmid/handler.hpp
@@ -19,7 +19,7 @@
 #include <boost/callable_traits.hpp>
 #include <cstdint>
 #include <exception>
-#include <ipmid/api.hpp>
+#include <ipmid/api-types.hpp>
 #include <ipmid/message.hpp>
 #include <memory>
 #include <optional>
@@ -502,4 +502,136 @@
     return ptr;
 }
 
+namespace impl
+{
+
+// IPMI command handler registration implementation
+bool registerHandler(int prio, NetFn netFn, Cmd cmd, Privilege priv,
+                     ::ipmi::HandlerBase::ptr handler);
+bool registerGroupHandler(int prio, Group group, Cmd cmd, Privilege priv,
+                          ::ipmi::HandlerBase::ptr handler);
+bool registerOemHandler(int prio, Iana iana, Cmd cmd, Privilege priv,
+                        ::ipmi::HandlerBase::ptr handler);
+
+} // namespace impl
+
+/**
+ * @brief main IPMI handler registration function
+ *
+ * This function should be used to register all new-style IPMI handler
+ * functions. This function just passes the callback to makeHandler, which
+ * creates a new wrapper object that will automatically extract the appropriate
+ * parameters for the callback function as well as pack up the response.
+ *
+ * @param prio - priority at which to register; see api.hpp
+ * @param netFn - the IPMI net function number to register
+ * @param cmd - the IPMI command number to register
+ * @param priv - the IPMI user privilige required for this command
+ * @param handler - the callback function that will handle this request
+ *
+ * @return bool - success of registering the handler
+ */
+template <typename Handler>
+bool registerHandler(int prio, NetFn netFn, Cmd cmd, Privilege priv,
+                     Handler&& handler)
+{
+    auto h = ipmi::makeHandler(std::forward<Handler>(handler));
+    return impl::registerHandler(prio, netFn, cmd, priv, h);
+}
+
+/**
+ * @brief register a IPMI OEM group handler
+ *
+ * From IPMI 2.0 spec Network Function Codes Table (Row 2Ch):
+ * The first data byte position in requests and responses under this network
+ * function identifies the defining body that specifies command functionality.
+ * Software assumes that the command and completion code field positions will
+ * hold command and completion code values.
+ *
+ * The following values are used to identify the defining body:
+ * 00h PICMG - PCI Industrial Computer Manufacturer’s Group.  (www.picmg.com)
+ * 01h DMTF Pre-OS Working Group ASF Specification (www.dmtf.org)
+ * 02h Server System Infrastructure (SSI) Forum (www.ssiforum.org)
+ * 03h VITA Standards Organization (VSO) (www.vita.com)
+ * DCh DCMI Specifications (www.intel.com/go/dcmi)
+ * all other Reserved
+ *
+ * When this network function is used, the ID for the defining body occupies
+ * the first data byte in a request, and the second data byte (following the
+ * completion code) in a response.
+ *
+ * @tparam Handler - implicitly specified callback function type
+ * @param prio - priority at which to register; see api.hpp
+ * @param netFn - the IPMI net function number to register
+ * @param cmd - the IPMI command number to register
+ * @param priv - the IPMI user privilige required for this command
+ * @param handler - the callback function that will handle this request
+ *
+ * @return bool - success of registering the handler
+ *
+ */
+template <typename Handler>
+void registerGroupHandler(int prio, Group group, Cmd cmd, Privilege priv,
+                          Handler&& handler)
+{
+    auto h = ipmi::makeHandler(handler);
+    impl::registerGroupHandler(prio, group, cmd, priv, h);
+}
+
+/**
+ * @brief register a IPMI OEM IANA handler
+ *
+ * From IPMI spec Network Function Codes Table (Row 2Eh):
+ * The first three data bytes of requests and responses under this network
+ * function explicitly identify the OEM or non-IPMI group that specifies the
+ * command functionality. While the OEM or non-IPMI group defines the
+ * functional semantics for the cmd and remaining data fields, the cmd field
+ * is required to hold the same value in requests and responses for a given
+ * operation in order to be supported under the IPMI message handling and
+ * transport mechanisms.
+ *
+ * When this network function is used, the IANA Enterprise Number for the
+ * defining body occupies the first three data bytes in a request, and the
+ * first three data bytes following the completion code position in a
+ * response.
+ *
+ * @tparam Handler - implicitly specified callback function type
+ * @param prio - priority at which to register; see api.hpp
+ * @param netFn - the IPMI net function number to register
+ * @param cmd - the IPMI command number to register
+ * @param priv - the IPMI user privilige required for this command
+ * @param handler - the callback function that will handle this request
+ *
+ * @return bool - success of registering the handler
+ *
+ */
+template <typename Handler>
+void registerOemHandler(int prio, Iana iana, Cmd cmd, Privilege priv,
+                        Handler&& handler)
+{
+    auto h = ipmi::makeHandler(handler);
+    impl::registerOemHandler(prio, iana, cmd, priv, h);
+}
+
 } // namespace ipmi
+
+#ifdef ALLOW_DEPRECATED_API
+/**
+ * @brief legacy IPMI handler registration function
+ *
+ * This function should be used to register all legacy IPMI handler
+ * functions. This function just behaves just as the legacy registration
+ * mechanism did, silently replacing any existing handler with a new one.
+ *
+ * @param netFn - the IPMI net function number to register
+ * @param cmd - the IPMI command number to register
+ * @param context - ignored
+ * @param handler - the callback function that will handle this request
+ * @param priv - the IPMI user privilige required for this command
+ */
+// [[deprecated("Use ipmi::registerHandler() instead")]]
+void ipmi_register_callback(ipmi_netfn_t netFn, ipmi_cmd_t cmd,
+                            ipmi_context_t context, ipmid_callback_t handler,
+                            ipmi_cmd_privilege_t priv);
+
+#endif /* ALLOW_DEPRECATED_API */
diff --git a/include/ipmid/message.hpp b/include/ipmid/message.hpp
index e628ff0..4079eab 100644
--- a/include/ipmid/message.hpp
+++ b/include/ipmid/message.hpp
@@ -18,6 +18,7 @@
 #include <algorithm>
 #include <boost/asio/spawn.hpp>
 #include <cstdint>
+#include <ipmid/api-types.hpp>
 #include <ipmid/message/types.hpp>
 #include <memory>
 #include <phosphor-logging/log.hpp>
diff --git a/include/ipmid/registration.hpp b/include/ipmid/registration.hpp
deleted file mode 100644
index 45391ec..0000000
--- a/include/ipmid/registration.hpp
+++ /dev/null
@@ -1,442 +0,0 @@
-/**
- * Copyright © 2018 Intel Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#pragma once
-
-#include <ipmid/api.hpp>
-#include <ipmid/filter.hpp>
-#include <ipmid/handler.hpp>
-
-namespace ipmi
-{
-
-namespace impl
-{
-
-// IPMI command handler registration implementation
-bool registerHandler(int prio, NetFn netFn, Cmd cmd, Privilege priv,
-                     ::ipmi::HandlerBase::ptr handler);
-bool registerGroupHandler(int prio, Group group, Cmd cmd, Privilege priv,
-                          ::ipmi::HandlerBase::ptr handler);
-bool registerOemHandler(int prio, Iana iana, Cmd cmd, Privilege priv,
-                        ::ipmi::HandlerBase::ptr handler);
-
-// IPMI command filter registration implementation
-void registerFilter(int prio, ::ipmi::FilterBase::ptr filter);
-
-} // namespace impl
-
-/**
- * @brief main IPMI handler registration function
- *
- * This function should be used to register all new-style IPMI handler
- * functions. This function just passes the callback to makeHandler, which
- * creates a new wrapper object that will automatically extract the appropriate
- * parameters for the callback function as well as pack up the response.
- *
- * @param prio - priority at which to register; see api.hpp
- * @param netFn - the IPMI net function number to register
- * @param cmd - the IPMI command number to register
- * @param priv - the IPMI user privilige required for this command
- * @param handler - the callback function that will handle this request
- *
- * @return bool - success of registering the handler
- */
-template <typename Handler>
-bool registerHandler(int prio, NetFn netFn, Cmd cmd, Privilege priv,
-                     Handler&& handler)
-{
-    auto h = ipmi::makeHandler(std::forward<Handler>(handler));
-    return impl::registerHandler(prio, netFn, cmd, priv, h);
-}
-
-/**
- * @brief register a IPMI OEM group handler
- *
- * From IPMI 2.0 spec Network Function Codes Table (Row 2Ch):
- * The first data byte position in requests and responses under this network
- * function identifies the defining body that specifies command functionality.
- * Software assumes that the command and completion code field positions will
- * hold command and completion code values.
- *
- * The following values are used to identify the defining body:
- * 00h PICMG - PCI Industrial Computer Manufacturer’s Group.  (www.picmg.com)
- * 01h DMTF Pre-OS Working Group ASF Specification (www.dmtf.org)
- * 02h Server System Infrastructure (SSI) Forum (www.ssiforum.org)
- * 03h VITA Standards Organization (VSO) (www.vita.com)
- * DCh DCMI Specifications (www.intel.com/go/dcmi)
- * all other Reserved
- *
- * When this network function is used, the ID for the defining body occupies
- * the first data byte in a request, and the second data byte (following the
- * completion code) in a response.
- *
- * @tparam Handler - implicitly specified callback function type
- * @param prio - priority at which to register; see api.hpp
- * @param netFn - the IPMI net function number to register
- * @param cmd - the IPMI command number to register
- * @param priv - the IPMI user privilige required for this command
- * @param handler - the callback function that will handle this request
- *
- * @return bool - success of registering the handler
- *
- */
-template <typename Handler>
-void registerGroupHandler(int prio, Group group, Cmd cmd, Privilege priv,
-                          Handler&& handler)
-{
-    auto h = ipmi::makeHandler(handler);
-    impl::registerGroupHandler(prio, group, cmd, priv, h);
-}
-
-/**
- * @brief register a IPMI OEM IANA handler
- *
- * From IPMI spec Network Function Codes Table (Row 2Eh):
- * The first three data bytes of requests and responses under this network
- * function explicitly identify the OEM or non-IPMI group that specifies the
- * command functionality. While the OEM or non-IPMI group defines the
- * functional semantics for the cmd and remaining data fields, the cmd field
- * is required to hold the same value in requests and responses for a given
- * operation in order to be supported under the IPMI message handling and
- * transport mechanisms.
- *
- * When this network function is used, the IANA Enterprise Number for the
- * defining body occupies the first three data bytes in a request, and the
- * first three data bytes following the completion code position in a
- * response.
- *
- * @tparam Handler - implicitly specified callback function type
- * @param prio - priority at which to register; see api.hpp
- * @param netFn - the IPMI net function number to register
- * @param cmd - the IPMI command number to register
- * @param priv - the IPMI user privilige required for this command
- * @param handler - the callback function that will handle this request
- *
- * @return bool - success of registering the handler
- *
- */
-template <typename Handler>
-void registerOemHandler(int prio, Iana iana, Cmd cmd, Privilege priv,
-                        Handler&& handler)
-{
-    auto h = ipmi::makeHandler(handler);
-    impl::registerOemHandler(prio, iana, cmd, priv, h);
-}
-
-/**
- * @brief IPMI command filter registration function
- *
- * This function should be used to register IPMI command filter functions.
- * This function just passes the callback to makeFilter, which creates a
- * wrapper functor object that ultimately calls the callback.
- *
- * Filters are called with a ipmi::message::Request shared_ptr on all IPMI
- * commands in priority order and each filter has the opportunity to reject the
- * command (by returning an IPMI error competion code.) If all the filters
- * return success, the actual IPMI command will be executed. Filters can reject
- * the command for any reason, based on system state, the context, the command
- * payload, etc.
- *
- * @param prio - priority at which to register; see api.hpp
- * @param filter - the callback function that will handle this request
- *
- * @return bool - success of registering the handler
- */
-template <typename Filter>
-void registerFilter(int prio, Filter&& filter)
-{
-    auto f = ipmi::makeFilter(std::forward<Filter>(filter));
-    impl::registerFilter(prio, f);
-}
-
-template <typename Filter>
-void registerFilter(int prio, const Filter& filter)
-{
-    auto f = ipmi::makeFilter(filter);
-    impl::registerFilter(prio, f);
-}
-} // namespace ipmi
-
-#ifdef ALLOW_DEPRECATED_API
-/**
- * @brief legacy IPMI handler registration function
- *
- * This function should be used to register all legacy IPMI handler
- * functions. This function just behaves just as the legacy registration
- * mechanism did, silently replacing any existing handler with a new one.
- *
- * @param netFn - the IPMI net function number to register
- * @param cmd - the IPMI command number to register
- * @param context - ignored
- * @param handler - the callback function that will handle this request
- * @param priv - the IPMI user privilige required for this command
- */
-// [[deprecated("Use ipmi::registerHandler() instead")]]
-void ipmi_register_callback(ipmi_netfn_t netFn, ipmi_cmd_t cmd,
-                            ipmi_context_t context, ipmid_callback_t handler,
-                            ipmi_cmd_privilege_t priv);
-
-#endif /* ALLOW_DEPRECATED_API */
-
-// IPMI 2.0 and DCMI 1.5 standard commands, namespaced by NetFn
-// OEM and non-standard commands should be defined where they are used
-namespace ipmi
-{
-namespace app
-{
-// 0x00 reserved
-constexpr Cmd cmdGetDeviceId = 0x01;
-constexpr Cmd cmdColdReset = 0x02;
-constexpr Cmd cmdWarmReset = 0x03;
-constexpr Cmd cmdGetSelfTestResults = 0x04;
-constexpr Cmd cmdManufacturingTestOn = 0x05;
-constexpr Cmd cmdSetAcpiPowerState = 0x06;
-constexpr Cmd cmdGetAcpiPowerState = 0x07;
-constexpr Cmd cmdGetDeviceGuid = 0x08;
-constexpr Cmd cmdGetNetFnSupport = 0x09;
-constexpr Cmd cmdGetCmdSupport = 0x0A;
-constexpr Cmd cmdGetCmdSubFnSupport = 0x0B;
-constexpr Cmd cmdGetConfigurableCmds = 0x0C;
-constexpr Cmd cmdGetConfigurableCmdSubFns = 0x0D;
-// 0x0E-0x21 unassigned
-constexpr Cmd cmdResetWatchdogTimer = 0x22;
-// 0x23 unassigned
-constexpr Cmd cmdSetWatchdogTimer = 0x24;
-constexpr Cmd cmdGetWatchdogTimer = 0x25;
-// 0x26-0x2D unassigned
-constexpr Cmd cmdSetBmcGlobalEnables = 0x2E;
-constexpr Cmd cmdGetBmcGlobalEnables = 0x2F;
-constexpr Cmd cmdClearMessageFlags = 0x30;
-constexpr Cmd cmdGetMessageFlags = 0x31;
-constexpr Cmd cmdEnableMessageChannelRcv = 0x32;
-constexpr Cmd cmdGetMessage = 0x33;
-constexpr Cmd cmdSendMessage = 0x34;
-constexpr Cmd cmdReadEventMessageBuffer = 0x35;
-constexpr Cmd cmdGetBtIfaceCapabilities = 0x36;
-constexpr Cmd cmdGetSystemGuid = 0x37;
-constexpr Cmd cmdGetChannelAuthCapabilities = 0x38;
-constexpr Cmd cmdGetSessionChallenge = 0x39;
-constexpr Cmd cmdActivateSession = 0x3A;
-constexpr Cmd cmdSetSessionPrivilegeLevel = 0x3B;
-constexpr Cmd cmdCloseSession = 0x3C;
-constexpr Cmd cmdGetSessionInfo = 0x3D;
-// 0x3E unassigned
-constexpr Cmd cmdGetAuthCode = 0x3F;
-constexpr Cmd cmdSetChannelAccess = 0x40;
-constexpr Cmd cmdGetChannelAccess = 0x41;
-constexpr Cmd cmdGetChannelInfoCommand = 0x42;
-constexpr Cmd cmdSetUserAccessCommand = 0x43;
-constexpr Cmd cmdGetUserAccessCommand = 0x44;
-constexpr Cmd cmdSetUserName = 0x45;
-constexpr Cmd cmdGetUserNameCommand = 0x46;
-constexpr Cmd cmdSetUserPasswordCommand = 0x47;
-constexpr Cmd cmdActivatePayload = 0x48;
-constexpr Cmd cmdDeactivatePayload = 0x49;
-constexpr Cmd cmdGetPayloadActivationStatus = 0x4A;
-constexpr Cmd cmdGetPayloadInstanceInfo = 0x4B;
-constexpr Cmd cmdSetUserPayloadAccess = 0x4C;
-constexpr Cmd cmdGetUserPayloadAccess = 0x4D;
-constexpr Cmd cmdGetChannelPayloadSupport = 0x4E;
-constexpr Cmd cmdGetChannelPayloadVersion = 0x4F;
-constexpr Cmd cmdGetChannelOemPayloadInfo = 0x50;
-// 0x51 unassigned
-constexpr Cmd cmdMasterWriteRead = 0x52;
-// 0x53 unassigned
-constexpr Cmd cmdGetChannelCipherSuites = 0x54;
-constexpr Cmd cmdSuspendResumePayloadEnc = 0x55;
-constexpr Cmd cmdSetChannelSecurityKeys = 0x56;
-constexpr Cmd cmdGetSystemIfCapabilities = 0x57;
-constexpr Cmd cmdSetSystemInfoParameters = 0x58;
-constexpr Cmd cmdGetSystemInfoParameters = 0x59;
-// 0x5A-0x5F unassigned
-constexpr Cmd cmdSetCommandEnables = 0x60;
-constexpr Cmd cmdGetCommandEnables = 0x61;
-constexpr Cmd cmdSetCommandSubFnEnables = 0x62;
-constexpr Cmd cmdGetCommandSubFnEnables = 0x63;
-constexpr Cmd cmdGetOemNetFnIanaSupport = 0x64;
-// 0x65-0xff unassigned
-} // namespace app
-
-namespace chassis
-{
-constexpr Cmd cmdGetChassisCapabilities = 0x00;
-constexpr Cmd cmdGetChassisStatus = 0x01;
-constexpr Cmd cmdChassisControl = 0x02;
-constexpr Cmd cmdChassisReset = 0x03;
-constexpr Cmd cmdChassisIdentify = 0x04;
-constexpr Cmd cmdSetChassisCapabilities = 0x05;
-constexpr Cmd cmdSetPowerRestorePolicy = 0x06;
-constexpr Cmd cmdGetSystemRestartCause = 0x07;
-constexpr Cmd cmdSetSystemBootOptions = 0x08;
-constexpr Cmd cmdGetSystemBootOptions = 0x09;
-constexpr Cmd cmdSetFrontPanelButtonEnables = 0x0A;
-constexpr Cmd cmdSetPowerCycleInterval = 0x0B;
-// 0x0C-0x0E unassigned
-constexpr Cmd cmdGetPohCounter = 0x0F;
-// 0x10-0xFF unassigned
-} // namespace chassis
-
-namespace sensor_event
-{
-constexpr Cmd cmdSetEventReceiver = 0x00;
-constexpr Cmd cmdGetEventReceiver = 0x01;
-constexpr Cmd cmdPlatformEvent = 0x02;
-// 0x03-0x0F unassigned
-constexpr Cmd cmdGetPefCapabilities = 0x10;
-constexpr Cmd cmdArmPefPostponeTimer = 0x11;
-constexpr Cmd cmdSetPefConfigurationParams = 0x12;
-constexpr Cmd cmdGetPefConfigurationParams = 0x13;
-constexpr Cmd cmdSetLastProcessedEventId = 0x14;
-constexpr Cmd cmdGetLastProcessedEventId = 0x15;
-constexpr Cmd cmdAlertImmediate = 0x16;
-constexpr Cmd cmdPetAcknowledge = 0x17;
-constexpr Cmd cmdGetDeviceSdrInfo = 0x20;
-constexpr Cmd cmdGetDeviceSdr = 0x21;
-constexpr Cmd cmdReserveDeviceSdrRepository = 0x22;
-constexpr Cmd cmdGetSensorReadingFactors = 0x23;
-constexpr Cmd cmdSetSensorHysteresis = 0x24;
-constexpr Cmd cmdGetSensorHysteresis = 0x25;
-constexpr Cmd cmdSetSensorThreshold = 0x26;
-constexpr Cmd cmdGetSensorThreshold = 0x27;
-constexpr Cmd cmdSetSensorEventEnable = 0x28;
-constexpr Cmd cmdGetSensorEventEnable = 0x29;
-constexpr Cmd cmdRearmSensorEvents = 0x2A;
-constexpr Cmd cmdGetSensorEventStatus = 0x2B;
-constexpr Cmd cmdGetSensorReading = 0x2D;
-constexpr Cmd cmdSetSensorType = 0x2E;
-constexpr Cmd cmdGetSensorType = 0x2F;
-constexpr Cmd cmdSetSensorReadingAndEvtSts = 0x30;
-// 0x31-0xFF unassigned
-} // namespace sensor_event
-
-namespace storage
-{
-// 0x00-0x0F unassigned
-constexpr Cmd cmdGetFruInventoryAreaInfo = 0x10;
-constexpr Cmd cmdReadFruData = 0x11;
-constexpr Cmd cmdWriteFruData = 0x12;
-// 0x13-0x1F unassigned
-constexpr Cmd cmdGetSdrRepositoryInfo = 0x20;
-constexpr Cmd cmdGetSdrRepositoryAllocInfo = 0x21;
-constexpr Cmd cmdReserveSdrRepository = 0x22;
-constexpr Cmd cmdGetSdr = 0x23;
-constexpr Cmd cmdAddSdr = 0x24;
-constexpr Cmd cmdPartialAddSdr = 0x25;
-constexpr Cmd cmdDeleteSdr = 0x26;
-constexpr Cmd cmdClearSdrRepository = 0x27;
-constexpr Cmd cmdGetSdrRepositoryTime = 0x28;
-constexpr Cmd cmdSetSdrRepositoryTime = 0x29;
-constexpr Cmd cmdEnterSdrRepoUpdateMode = 0x2A;
-constexpr Cmd cmdExitSdrReposUpdateMode = 0x2B;
-constexpr Cmd cmdRunInitializationAgent = 0x2C;
-// 0x2D-0x3F unassigned
-constexpr Cmd cmdGetSelInfo = 0x40;
-constexpr Cmd cmdGetSelAllocationInfo = 0x41;
-constexpr Cmd cmdReserveSel = 0x42;
-constexpr Cmd cmdGetSelEntry = 0x43;
-constexpr Cmd cmdAddSelEntry = 0x44;
-constexpr Cmd cmdPartialAddSelEntry = 0x45;
-constexpr Cmd cmdDeleteSelEntry = 0x46;
-constexpr Cmd cmdClearSel = 0x47;
-constexpr Cmd cmdGetSelTime = 0x48;
-constexpr Cmd cmdSetSelTime = 0x49;
-constexpr Cmd cmdGetAuxiliaryLogStatus = 0x5A;
-constexpr Cmd cmdSetAuxiliaryLogStatus = 0x5B;
-constexpr Cmd cmdGetSelTimeUtcOffset = 0x5C;
-constexpr Cmd cmdSetSelTimeUtcOffset = 0x5D;
-// 0x5E-0xFF unassigned
-} // namespace storage
-
-namespace transport
-{
-constexpr Cmd cmdSetLanConfigParameters = 0x01;
-constexpr Cmd cmdGetLanConfigParameters = 0x02;
-constexpr Cmd cmdSuspendBmcArps = 0x03;
-constexpr Cmd cmdGetIpUdpRmcpStatistics = 0x04;
-constexpr Cmd cmdSetSerialModemConfig = 0x10;
-constexpr Cmd cmdGetSerialModemConfig = 0x11;
-constexpr Cmd cmdSetSerialModemMux = 0x12;
-constexpr Cmd cmdGetTapResponseCodes = 0x13;
-constexpr Cmd cmdSetPppUdpProxyTransmitData = 0x14;
-constexpr Cmd cmdGetPppUdpProxyTransmitData = 0x15;
-constexpr Cmd cmdSendPppUdpProxyPacket = 0x16;
-constexpr Cmd cmdGetPppUdpProxyReceiveData = 0x17;
-constexpr Cmd cmdSerialModemConnActive = 0x18;
-constexpr Cmd cmdCallback = 0x19;
-constexpr Cmd cmdSetUserCallbackOptions = 0x1A;
-constexpr Cmd cmdGetUserCallbackOptions = 0x1B;
-constexpr Cmd cmdSetSerialRoutingMux = 0x1C;
-constexpr Cmd cmdSolActivating = 0x20;
-constexpr Cmd cmdSetSolConfigParameters = 0x21;
-constexpr Cmd cmdGetSolConfigParameters = 0x22;
-constexpr Cmd cmdForwardedCommand = 0x30;
-constexpr Cmd cmdSetForwardedCommands = 0x31;
-constexpr Cmd cmdGetForwardedCommands = 0x32;
-constexpr Cmd cmdEnableForwardedCommands = 0x33;
-} // namespace transport
-
-namespace bridge
-{
-constexpr Cmd cmdGetBridgeState = 0x00;
-constexpr Cmd cmdSetBridgeState = 0x01;
-constexpr Cmd cmdGetIcmbAddress = 0x02;
-constexpr Cmd cmdSetIcmbAddress = 0x03;
-constexpr Cmd cmdSetBridgeProxyAddress = 0x04;
-constexpr Cmd cmdGetBridgeStatistics = 0x05;
-constexpr Cmd cmdGetIcmbCapabilities = 0x06;
-constexpr Cmd cmdClearBridgeStatistics = 0x08;
-constexpr Cmd cmdGetBridgeProxyAddress = 0x09;
-constexpr Cmd cmdGetIcmbConnectorInfo = 0x0A;
-constexpr Cmd cmdGetIcmbConnectionId = 0x0B;
-constexpr Cmd cmdSendIcmbConnectionId = 0x0C;
-constexpr Cmd cmdPrepareForDiscovery = 0x10;
-constexpr Cmd cmdGetAddresses = 0x11;
-constexpr Cmd cmdSetDiscovered = 0x12;
-constexpr Cmd cmdGetChassisDeviceId = 0x13;
-constexpr Cmd cmdSetChassisDeviceId = 0x14;
-constexpr Cmd cmdBridgeRequest = 0x20;
-constexpr Cmd cmdBridgeMessage = 0x21;
-// 0x22-0x2F unassigned
-constexpr Cmd cmdGetEventCount = 0x30;
-constexpr Cmd cmdSetEventDestination = 0x31;
-constexpr Cmd cmdSetEventReceptionState = 0x32;
-constexpr Cmd cmdSendIcmbEventMessage = 0x33;
-constexpr Cmd cmdGetEventDestination = 0x34;
-constexpr Cmd cmdGetEventReceptionState = 0x35;
-// 0xC0-0xFE OEM Commands
-constexpr Cmd cmdErrorReport = 0xFF;
-} // namespace bridge
-
-namespace dcmi
-{
-constexpr Cmd cmdGetDcmiCapabilitiesInfo = 0x01;
-constexpr Cmd cmdGetPowerReading = 0x02;
-constexpr Cmd cmdGetPowerLimit = 0x03;
-constexpr Cmd cmdSetPowerLimit = 0x04;
-constexpr Cmd cmdActDeactivatePwrLimit = 0x05;
-constexpr Cmd cmdGetAssetTag = 0x06;
-constexpr Cmd cmdGetDcmiSensorInfo = 0x07;
-constexpr Cmd cmdSetAssetTag = 0x08;
-constexpr Cmd cmdGetMgmtCntlrIdString = 0x09;
-constexpr Cmd cmdSetMgmtCntlrIdString = 0x0A;
-constexpr Cmd cmdSetThermalLimit = 0x0B;
-constexpr Cmd cmdGetThermalLimit = 0x0C;
-constexpr Cmd cmdGetTemperatureReadings = 0x10;
-constexpr Cmd cmdSetDcmiConfigParameters = 0x12;
-constexpr Cmd cmdGetDcmiConfigParameters = 0x13;
-} // namespace dcmi
-
-} // namespace ipmi
diff --git a/ipmid-new.cpp b/ipmid-new.cpp
index 2668157..2a2d4a6 100644
--- a/ipmid-new.cpp
+++ b/ipmid-new.cpp
@@ -31,7 +31,6 @@
 #include <ipmid/handler.hpp>
 #include <ipmid/message.hpp>
 #include <ipmid/oemrouter.hpp>
-#include <ipmid/registration.hpp>
 #include <ipmid/types.hpp>
 #include <map>
 #include <memory>
diff --git a/read_fru_data.cpp b/read_fru_data.cpp
index 17bcfe4..1f99e20 100644
--- a/read_fru_data.cpp
+++ b/read_fru_data.cpp
@@ -2,9 +2,8 @@
 
 #include "fruread.hpp"
 
-#include <ipmid/api.h>
-
 #include <algorithm>
+#include <ipmid/api.hpp>
 #include <ipmid/types.hpp>
 #include <ipmid/utils.hpp>
 #include <map>
diff --git a/selutility.cpp b/selutility.cpp
index 3aecb1c..97c2b2b 100644
--- a/selutility.cpp
+++ b/selutility.cpp
@@ -2,10 +2,9 @@
 
 #include "selutility.hpp"
 
-#include <ipmid/api.h>
-
 #include <chrono>
 #include <filesystem>
+#include <ipmid/api.hpp>
 #include <ipmid/types.hpp>
 #include <ipmid/utils.hpp>
 #include <phosphor-logging/elog-errors.hpp>
diff --git a/sensordatahandler.hpp b/sensordatahandler.hpp
index 8403a8d..6d80f9a 100644
--- a/sensordatahandler.hpp
+++ b/sensordatahandler.hpp
@@ -2,9 +2,8 @@
 
 #include "sensorhandler.hpp"
 
-#include <ipmid/api.h>
-
 #include <cmath>
+#include <ipmid/api.hpp>
 #include <ipmid/types.hpp>
 #include <ipmid/utils.hpp>
 #include <sdbusplus/message/types.hpp>
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index cf8feaa..48546af 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -2,13 +2,13 @@
 
 #include "fruread.hpp"
 
-#include <ipmid/api.h>
 #include <mapper.h>
 #include <systemd/sd-bus.h>
 
 #include <bitset>
 #include <cmath>
 #include <cstring>
+#include <ipmid/api.hpp>
 #include <ipmid/types.hpp>
 #include <ipmid/utils.hpp>
 #include <phosphor-logging/elog-errors.hpp>
diff --git a/sensorhandler.hpp b/sensorhandler.hpp
index 21d2317..954a3ed 100644
--- a/sensorhandler.hpp
+++ b/sensorhandler.hpp
@@ -1,8 +1,8 @@
 #pragma once
 
-#include <ipmid/api.h>
 #include <stdint.h>
 
+#include <ipmid/api.hpp>
 #include <ipmid/types.hpp>
 
 // IPMI commands for net functions.
diff --git a/storageaddsel.cpp b/storageaddsel.cpp
index 5adb673..6b53f87 100644
--- a/storageaddsel.cpp
+++ b/storageaddsel.cpp
@@ -3,7 +3,6 @@
 #include "sensorhandler.hpp"
 #include "storagehandler.hpp"
 
-#include <ipmid/api.h>
 #include <mapper.h>
 #include <systemd/sd-bus.h>
 
@@ -12,6 +11,7 @@
 #include <cstring>
 #include <fstream>
 #include <iostream>
+#include <ipmid/api.hpp>
 #include <ipmid/types.hpp>
 #include <memory>
 #include <phosphor-logging/elog.hpp>
diff --git a/storagehandler.cpp b/storagehandler.cpp
index 55e17f2..18f1357 100644
--- a/storagehandler.cpp
+++ b/storagehandler.cpp
@@ -7,7 +7,6 @@
 #include "storageaddsel.hpp"
 
 #include <arpa/inet.h>
-#include <ipmid/api.h>
 #include <mapper.h>
 #include <systemd/sd-bus.h>
 
@@ -16,6 +15,7 @@
 #include <cstdio>
 #include <cstring>
 #include <filesystem>
+#include <ipmid/api.hpp>
 #include <ipmid/utils.hpp>
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/log.hpp>
diff --git a/systemintfcmds.cpp b/systemintfcmds.cpp
index aeded06..d298abd 100644
--- a/systemintfcmds.cpp
+++ b/systemintfcmds.cpp
@@ -8,7 +8,6 @@
 #include <cstring>
 #include <ipmid-host/cmd.hpp>
 #include <ipmid/api.hpp>
-#include <ipmid/registration.hpp>
 
 void register_netfn_app_functions() __attribute__((constructor));
 
diff --git a/transporthandler.cpp b/transporthandler.cpp
index ba0772b..59d933a 100644
--- a/transporthandler.cpp
+++ b/transporthandler.cpp
@@ -4,11 +4,11 @@
 #include "user_channel/channel_layer.hpp"
 
 #include <arpa/inet.h>
-#include <ipmid/api.h>
 
 #include <chrono>
 #include <filesystem>
 #include <fstream>
+#include <ipmid/api.hpp>
 #include <ipmid/utils.hpp>
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/log.hpp>
diff --git a/user_channel/channel_layer.hpp b/user_channel/channel_layer.hpp
index b86d6bf..94570fb 100644
--- a/user_channel/channel_layer.hpp
+++ b/user_channel/channel_layer.hpp
@@ -16,7 +16,6 @@
 #pragma once
 #include <ipmid/api.h>
 
-#include <ipmid/api.hpp>
 #include <ipmid/message.hpp>
 #include <string>
 
diff --git a/user_channel/usercommands.cpp b/user_channel/usercommands.cpp
index d0ea29f..76def4b 100644
--- a/user_channel/usercommands.cpp
+++ b/user_channel/usercommands.cpp
@@ -20,9 +20,9 @@
 #include "channel_layer.hpp"
 #include "user_layer.hpp"
 
-#include <ipmid/api.h>
 #include <security/pam_appl.h>
 
+#include <ipmid/api.hpp>
 #include <phosphor-logging/log.hpp>
 #include <regex>
 
diff --git a/whitelist-filter.cpp b/whitelist-filter.cpp
index 1d486ca..a24ccad 100644
--- a/whitelist-filter.cpp
+++ b/whitelist-filter.cpp
@@ -1,7 +1,6 @@
 #include <algorithm>
 #include <array>
 #include <ipmid/api.hpp>
-#include <ipmid/registration.hpp>
 #include <ipmid/utils.hpp>
 #include <ipmiwhitelist.hpp>
 #include <phosphor-logging/elog-errors.hpp>
