Introduction

Lipophilicity, usually quantified as the logarithm (to base 10) of the 1-octanol/water partition coefficient (Poct) or distribution coefficient, (Doct) is the most widely used physicochemical property in drug discovery and the key molecular design parameter in medicinal chemistry [1, 2]. Lipophilicity has been of interest in the physiological context for many years and it was in 1847 that von Bibra and Harless [3] suggested that the narcotic effects of Schwefeläther might be due to its affinity for brain lipids. The essential features of partitioning between liquid phases had already been articulated by Nernst [4] when Meyer [5] and Overton [6] published their studies relating anesthetic potency to solubility in olive oil. The 1-octanol/water partitioning system appears to have first been used by Collander [7] who also measured the partitioning of compounds between water and oleyl alcohol, a solvent recommended by the younger Meyer [8] for studies of this nature. Collander certainly recognized the influence of hydrogen bonding on partitioning and noted the existence of linear relationships between partition coefficients measured for different monohydric alcohols and water [7]. The adoption of the 1-octanol/water system for partitioning studies in drug discovery can be traced to a 1963 article by Hansch et al. [9]. With the benefit of hindsight, the original selection of 1-octanol/water as the favored partitioning system does appear arbitrary and it was also incorrectly stated that Collander had observed linear correlations between logP for systems other than alcohols and water. This is not to deny that logPoct has proved a useful parameter in drug discovery or that the concept of lipophilicity has shaped the thinking of medicinal chemists.

The main uses of logPoct in contemporary drug discovery are for modeling the association of compounds with cell membranes that is a necessary, but not sufficient, condition for passive diffusion through membranes and as a general purpose descriptor of desolvation for modeling affinity and properties, such as aqueous solubility, that are relevant to pharmaceutical design [1014]. A number of researchers have questioned [1521] the suitability of 1-octanol/water partition coefficients for these purposes since 1-octanol is capable of forming hydrogen bonds with polar solutes. It can be argued that this capacity for hydrogen bonding makes 1-octanol a poor model for the hydrocarbon-like interior of a lipid bilayer or for polar-apolar contacts that can be either intermolecular (drug-target complex) or intermolecular (folded protein). It is noteworthy that while the lower polarity limit for the Rule of 5 [1] is defined in terms of lipophilicity, the upper for polarity is specified by numbers of hydrogen bonding groups. Another characteristic of the 1-octanol/water system that compromises its general applicability as a descriptor of aqueous desolvation is its relative inability to sense hydrogen bond donors in solute molecules [22]. In the context of direct measurement of partition coefficients, 1-octanol is also much wetter (2.5 M water) [23] than hydrocarbon solvents such as hexadecane (2 × 10−3 M water) [21] or cyclohexane (1.5 × 10−3 M water) [24]. Water in the organic phase stabilizes polar solutes and makes them appear more lipophilic than if the partition coefficients had been determined by the solubility ratio [26]. Self-association (e.g. for lactams) [27] in the organic phase has an analogous effect and can present difficulties when solubility ratio is used to measure partition coefficients since the experiment is performed at saturation and solute concentration cannot be varied.

Alkane/water partitioning systems also have a long history and the insights of Golumbic et al. [28] into steric effects on hydrogen bonding by phenols, gained from measuring cyclohexane/water partition coefficients (Pchx), actually pre-dated the Collander study [7]. More recently, logPchx measurements have been used to investigate the effects of intramolecular hydrogen bonding and steric control of conformational preferences [29]. The alkane/water partition coefficient (Palk) of a compound is typically lower than Poct and the difference (ΔlogP) between the logarithms of the two quantities reflects the potential of the compound to make electrostatic interactions, such as hydrogen bonds, with polar solvents [30]. Measured values of logPalk differ in in the choice of alkane (e.g. cyclohexane, hexadecane), experimental conditions (e.g. temperature) and whether or not the organic and aqueous phases are mutually saturated when measurement is made. There is no single consistent data set that is sufficiently large and structurally diverse for developing predictive models for logPalk. It has been suggested [31] that logP values measured for alkanes other than cyclohexane do not differ significantly from each other and that these can be combined for analysis. Although statistically significant differences have been observed [30, 31] between logP values measured for cyclohexane and other alkanes, the differences are small and it is not clear how widely applicable the published regression equations are for inter-conversion. In the current study, no attempt was made to convert logPcyc values to their equivalents in other alkane/water solvent systems and the term logPalk will be taken to mean any partition coefficient that has been measured in a saturated hydrocarbon/water partitioning system.

While a number of approaches to predicting logPalk have been reported, practical access to predictive tools is limited. The most extensive body of work is that of Abraham et al. who use a general solvation equation to model partition coefficients measured in a range of solvent systems [22, 24, 31]. Using the general solvation equation to predict alkane/water appears [31] to require some experimental measurements (e.g. logPoct) for compounds of interest and it is not clear how reliably or generally the approach can be used to make predictions from molecular structure alone. Molecular surface area [33] (MSA) and volume [34] have been used with atom-typing to model logPalk, as have molecular electrostatic properties [35], molecular interaction fields [36] and implicit solvent models [37]. The alkane/water partition coefficient has also been treated as a perturbation of its 1-octanol/water equivalent by making ΔlogP the target for predictive modeling [21]. The ClogPalk model introduced in the current study also treats logPalk as a perturbation although, in this case, the reference state is a saturated hydrocarbon molecule with the same MSA as the molecule for which prediction is being made. A rationale for this approach is provided by the strong correlation of logPalk with MSA that is observed for saturated hydrocarbons. The perturbation, which can be regarded as a measure of molecular polarity, is quantified for functional groups using atom types and it is the development and parameterization of this model that forms the basis for this work.

Computational details

The molecular modeling software described in this article was either provided by OpenEye Scientific Software [38] or built using OpenEye programming toolkits. Molecular structures were encoded as isomeric SMILES [39, 40] strings and Omega [41, 42] was used to generate a single conformation for each. Molecular geometries were energy-minimized (MMFF94S) [43] using the Szybki [44] molecular mechanics program. Omega failed to generate 3D coordinates for sulfur hexafluoride and the molecular model for this compound was built with octahedral symmetry using the experimentally determined bond length [45]. Molecular surface area was calculated from atomic coordinates and Bondi [46] radii using a probe radius of 1.4 Å. Molecular similarity was calculated as Tanimoto coefficient using path-based fingerprints (1,024 bits; paths up to 5 bonds) using the GraphSim toolkit [47] The JMP software [48] was used for all data analysis.

Two pieces of software were created in the course of this study. SSProFilter was built with the OEChem [49] toolkit and combines the functionality of the previously described Filter [50] program (which should not be confused with the OpenEye product of the same name) with the ability to profile molecular structures by counting matches with substructural patterns encoded as SMARTS [51]. The SSProfilter program was used to identify molecular structures containing only the atom types of interest for deriving parameters. The ClogPalk program that is the focus of this article was built using the OEChem [49] (SMARTS matching; structure handling) and OESpicoli [52] (MSA calculation) toolkits. Measured logPalk values were obtained from a number of literature sources [16, 17, 21, 22, 24, 25, 2932, 36, 5365] and the data set is provided with structures (in isomeric SMILES format) as supplemental material.

The ClogPalk predictive model is defined by Eq. 1:

$$C\log P_{alk} = \log P_{0} + s \times MSA - \sum\limits_{i} {\Updelta \log P_{FG,i} } - \sum\limits_{j} {\Updelta \log P_{Int,j} } $$
(1)

The first two terms of Eq. 1 relate the logPalk values measured for saturated hydrocarbons to MSA and describe reference state of the model. The last two terms quantify the extent to which this saturated hydrocarbon reference state is perturbed by the introduction of non-carbon atoms and unsaturation into the molecular structure. Each functional group (ΔlogPFG,i) and interaction (ΔlogPInt,j) term is associated with a substructural target defined using the OpenEye implementation of SMARTS notation. In both cases vector bindings (e.g. $Csp3≡[CX4]) were used to make the patterns more human-readable and the vector bindings used by the ClogPalk model are listed in Table 1. It can be helpful to think of the functional group and interaction terms in Eq. 1 as first and second order perturbations respectively.

Table 1 Atom types defined as vector bindings

Each functional group term is calculated, using Eq. 2 from the number of matches (Ni) with the relevant SMARTS target. In the context of the model a functional group is simply a substructure, which can even be a single atom (e.g. aromatic carbon), with which a perturbation is associated. It is important to note that Eq. 2, which has an intercept term (kFG,i), is only applied if the relevant functional group actually occurs in the molecular structure for which prediction is being made and this intercept term was only rarely used (e.g. for the aromatic carbon atom type).

$$\Updelta \log P_{FG,i} = f_{FG,i} \times N_{i} + k_{FG,i} $$
(2)

Atoms are typed when the functional group terms are calculated which means that each atom is linked to, at most, one SMARTS pattern when Eq. 2 is applied. For multi-atom SMARTS patterns, only the atom mapped by the first atom (the head atom) of the SMARTS string is typed and the contribution of the entire functional group (e.g. sulfonamide) is loaded onto the head atom (e.g. sulfur). The SMARTS patterns are matched in the order in which they occur in the parameter file and each atom is linked to the last SMARTS target with which it matches. This facilitates customization of the model because a generic parameter can simply be over-written by a more specific one that might, for example, have been derived using proprietary data. Each interaction term is calculated, using Eq. 3 from the number of matches (Nj) with the relevant SMARTS target and, in contrast with the functional group terms, an atom can be associated with more than one interaction term.

$$\Updelta \log P_{Int,j} = f_{Int,j} \times N_{j} $$
(3)

The ClogPalk model is perturbation-based and its parameterization can be described as ordered in that parameters were not derived simultaneously. The first step in deriving a functional group parameter is to assemble logPalk values measured for compounds in which only hydrogen, saturated carbon and the relevant functional group are present in the molecular structure. This creates a training set specific to the relevant functional group and parameters are derived independently of each other using Eq. 2 (the intercept term kFG,i is only rarely used). The interaction parameters (Eq. 3) were set in the final step of the process. The model was validated using an external test set of 100 measured logPalk values.

Alkane/water partition coefficients for saturated hydrocarbons

The basis for the ClogPalk predictive model is the strong, linear relationship between logPalk and MSA observed for a set of 48 saturated hydrocarbons that included linear, branched and cyclic species (Fig. 1; Eq. 4).

Fig. 1
figure 1

Relationship between logPalk and calculated molecular surface area observed for saturated hydrocarbons

$$\log P_{alk} = 0.0340 \times MSA/{\AA}^{2} - 0.309 $$
(4)

N = 48; R2 = 0.987; RMSE = 0.152.

Derivation of functional group parameters

The ClogPalk model is perturbation-based and its parameterization can be described as ordered in that parameters were not derived simultaneously. Functional group parameters can be derived directly when the only atom types in the molecular structure are those that define the functional group, saturated carbon and hydrogen. In these situations, values of ΔlogPFG,i, obtained by subtracting measured logPalk from the value calculated from Eq. 4, can be fit using Eq. 2. In other cases, functional group X (e.g. aromatic nitrogen) cannot be found except when another functional group Y (e.g. aromatic carbon) is also present. If parameters have already been derived for functional group Y then these can be used to adjust the predicted (Eq. 4) value of logPalk prior to calculating ΔlogPFG,i and fitting Eq. 2. The first step of the parameterization of the ClogPalk model was to investigate the need for aromatic carbon parameters since this atom type is almost ubiquitous in compounds of pharmaceutical interest. When using SMARTS notation, certain carbons (e.g. pyridone carbonyl) are considered to be aromatic and a more restrictive aromatic carbon atom type was defined using vector bindings to prevent matches with these. A number of atom types, including the re-defined aromatic carbon [$Car], are listed in Table 1, and these were used to build SMARTS definitions and make them more easily read by humans. Parameters for alkene, alkyne and aromatic atoms are listed in Table 2 and it should be noted that intercept terms (kFG,i) were used for alkene and aromatic carbon but not alkyne carbon. Intercept terms were also used for chlorine and bromine bonded to either aromatic or saturated carbon. Parameters for these atom types are included in Table 2 for convenience because intercept terms are not used for any other functional groups. The value of the root mean square error (RMSE) provides an indication of the internal consistency of the data used to derive parameters for the relevant functional group.

Table 2 Functional group contributions for unsaturated carbon and halogen-substituted aromatic carbon

It was possible to derive parameters for a number of functional groups that were not dependent on the values of the parameters for unsaturated carbon atom types and these are listed in Table 3. Parameters for urea and thiourea were observed to be similar and SMARTS definitions for amides were generalized to match thioamides although the measured data corresponded only to amides. Parameters for imines were generated by taking the mean of the primary amine and nitrile parameters. Parameters for functional groups that were dependent on the parameter values for aromatic carbon are listed in Table 4. A generic unsaturated carbon atom type was used in the SMARTS although in most cases the measured data correspond only to the aromatic carbon type.

Table 3 Functional group contributions
Table 4 Functional group contributions

Interaction parameters

Interactions between atoms within molecules such as intramolecular hydrogen bonds affect partition coefficients and are treated as secondary perturbations in the ClogPalk model. While these effects can also be accounted for within the functional group framework, treating interactions in this manner allows more flexibility in parameterization and simplifies the process of specifying substructures. Values for the interaction parameters depend on the functional group parameters and their derivation represents the final step of the parameterization process. The data set available is sparse and deriving interaction parameters typically involves an element of extrapolation. The interaction parameters are listed in Table 5.

Table 5 Interaction parameters for ClogPalk model

The nature of the interaction parameters is best illustrated with reference to examples. The logPalk value measured for Ephedrine was used to set an intramolecular (5-membered ring) hydrogen bond term for the interaction of amine nitrogen with hydroxyl. A parameter of the same value was then assigned to describe the contribution of the analogous intramolecular hydrogen bond in a 6-membered ring and the substructural specification for the hydroxyl was broadened to match other hydrogen bond donors such as amides and sulfonamides. The effect of an intramolecular hydrogen bond (6-membered ring) involving carbonyl oxygen as the acceptor was parameterized using logPalk measured for 2-hydroxybenzaldehyde. A parameter for the through-bond interactions between ether oxygen atoms was derived by comparing the logPalk measurement for 1,4-dioxane with the value calculated using the ether oxygen parameter in Table 3. Heteroaromatic rings with more than one heteroatom were also treated using interaction parameters. For example, the interaction between the nitrogen atoms in quinoxaline was quantified by comparing its measured logPalk with the value predicted using aromatic nitrogen parameters derived from logPalk values measured for pyridine, quinolone, isoquinoline and their alkylated derivatives.

Validation

The ClogPalk model is applied using 82 functional group definitions and 41 interaction definitions and it is important to stress that the functional group parameters are either derived independently of each other or depend on the parameter(s) for at most one other atom type (e.g. aromatic carbon). In this respect it differs from a multivariate regression model in which the parameters are dependent on each other (and the extent to which descriptors are correlated with each other). One of the reviewers of the manuscript raised questions about the number of degrees of freedom in the model. In responding to this question we note that a separate training set was generated for each functional group so the relevant parameters were derived independently of each other. Each training set was specific to the functional group being parameterized so that there was only a single degree of freedom in the fitting process unless an intercept term was used, in which case there were two. The number of logPalk measurements used to derive each parameter is given in Tables 2, 3 and the values of RMSE listed in those tables indicate how well each parameter fits its training set. Interaction terms were typically set using single pairs of logPalk measurements. Although orthogonal training sets were used to fit parameters, they can be combined to provide a summary of how well the model fits the data used to train it. The combined training sets consisted of a total of 743 logPalk measurements for 515 compounds. The distribution of residuals (logPalk−ClogPalk) is summarized as percentiles in Table 6 and the histogram in Fig. 2.

Table 6 Distribution of logPalk−ClogPalk for training set and external test set
Fig. 2
figure 2

Distributions of residuals for training set (a) and external test set (b)

The ClogPalk model was validated using an external test set of 100 logPalk measurements for 91 compounds, most of which were drugs (Fig. 3). Residual (logPalk−ClogPalk) values are listed in Table 7 and their distribution is summarized as percentiles in Table 6. The interquartile range for these residuals is 0.90 log units. The most negative (over-predicted) residual is the value of −2.76 that was observed for one of logPalk measurements for atropine although the residual (−0.69) corresponding to the other measurement for this compound is smaller in magnitude. The two most positive residuals calculated for the test data correspond to the steroids cortisone (4.65) and hydrocortisone (3.86) although the residuals for other steroids such as cortexolone (0.55), estradiol (−0.06), estrone (−0.03) and testosterone (−0.02 and 0.02) are much smaller in magnitude. Cortisone (logPalk = −0.55) and hydrocortisone (logPalk = −2.04) are respectively keto and hydroxy derivatives of cortexolone (logPalk = −1.00) and the observation that the introduction of ketone functionality into the latter appears to increase lipophilicity raises questions about the consistency of the data. The logPhxd values [22] measured for cyclohexane (3.91), cyclohexanone (0.19) and cyclohexanol (−0.25) suggest that cortisone and hydrocortisone would be expected to be at least 3.5 log units less lipophilic than cortexolone in alkane/water systems. Although self-association in the alkane might be invoked to explain these observations, one would still need a convincing argument for why it was not an issue for cortexolone.

Table 7 Measured logPalk values and residuals for external test set (N = 100)
Fig. 3
figure 3

Plot showing relationship between observed (logPalk) and predicted (ClogPalk) values of alkane/water partition coefficient for external test set. Median and quartile values for (obs–pred) are shown as horizontal lines

Another suggestion made by a reviewer of the manuscript was that it would be helpful to illustrate the similarity of the training and external test sets as a histogram of nearest neighbor similarities. This addresses the concern that a model predicts by locating neighbors rather than by capturing the response of the property to the descriptors. Although this is less of an issue for a perturbation-based model like ClogPalk than it would be for a multivariate regression model, the information is still useful. The quantity of interest here is the similarity between each molecular structure in the external test set and its closest analog amongst the structures used to train the model. A histogram of nearest neighbor similarities is shown in Fig. 4 and the maximum value found was 0.74.

Fig. 4
figure 4

Histogram showing distribution of nearest neighbor (external test versus training data) similarity for external test set structures

Discussion

The primary objective of this study was to investigate how far what is an essentially cheminformatic approach to prediction of logPalk could be taken. The performance of the ClogPalk model against an external test suggests that it represents a tractable approach to predicting alkane/water partition coefficients. The parameters are completely external to the software so the method could also be applied to the prediction of logP for other partitioning systems. It should be explicitly stated that the atom-typing scheme used in this study is unlikely to be of much use for scoring of poses generated by docking because the perturbation due to a functional group is loaded onto a single atom within the functional group that has typically been chosen to facilitate coding of the SMARTS.

Availability of data is always an issue when developing predictive models like ClogPalk that are based on substructural rules and derivation of parameters typically requires assumptions to be made. For example, a number of substructural patterns include match sp2 or sp carbon although there may only have been measured data when the relevant atom is aromatic carbon. The urea parameters were observed to be similar to those derived for thioureas and substructural patterns used to identify amides were extended to match the corresponding thioamides. Interactions, either direct or through bonds, between polar atoms present the main challenge when deriving parameters for substructurally-based lipophilicity models and these interaction terms are likely to represent the weak link in the current parameterization of the model. Experimental data for compounds in which these interactions are most pronounced would have the greatest value for developing models like ClogPalk. Heterocycles in which a high proportion of the atoms in the ring are heteroatoms and compounds, such as tetrazole and 4-dimethylaminopyridine that can present particularly strong hydrogen bond donors or acceptors to solvent would be of particular interest in this regard. While intramolecular hydrogen bonding does present a challenge for prediction methodology, it should be noted that measurement of logPalk is actually a powerful tool for studying intramolecular hydrogen bonding and investigating conformational effects on solvation [29]. Measured logPalk is also a more widely accessible property than gas to water transfer free energy that is normally used when developing models for aqueous solvation. For example, a data set [66] that has been widely used for parameterization of aqueous solvation models consists of thermodynamic measurements for structurally prototypical compounds that are largely monofunctional. Models derived from this data set are then used to predict solvation energies for polyfunctional compounds and occasionally regions of protein molecular surfaces.

The parameters for the ClogPalk model are read from a text file and visible to the user. The model has been explicitly designed to facilitate customization by users since we believe this adds value to predictive modeling software. The most likely customization scenario is one in which proprietary data is available for compounds with substructures that are inadequately parameterized in the current model and there are two ways in which parameters can be added. Typically the substructure in question will be a variation of a substructure that has already been parameterized and an interaction term can be used to encode the variation as a perturbation of the existing substructure. Alternatively, the substructure can be included as a new functional group and inserted into the parameter file after the existing functional groups, ensuring that the more specific definition takes priority over the more general one in the existing model.

When considering how a model like ClogPalk might be used in drug discovery, it is important to stress that logPoct is likely to remain an important design parameter in lead optimization which is often carried out within the framework of structural series. At the same time, it should be remembered that the original selection of 1-octanol/water for partitioning studies was arbitrary and not based on an objective comparison of different solvent systems. Often polar functionality is relatively conserved within a structural series and logP values measured using different partitioning systems will tend to differ by a constant when this is the case. Provided that the properties of interest respond linearly to logP, the choice of partitioning system will not usually be critical when optimizing within a single lead series.

The situation is different in lead identification where lipophilicity measures are used to prioritize compounds and structural series for hit-to-lead chemistry and further optimization. The difference, ΔlogP, between logPoct and logPalk can be considered as a measure of the hydrogen bonding capacity of a compound and, outside structural series, cut off values cannot simply be shifted by a constant to account for differences between partitioning systems. Lipophilicity is also used to create efficiency metrics [67] (e.g. pIC50−logP) which can be used to compare compounds and structural series. Offsetting potency or affinity by lipophilicity in this manner has the effect (at least for neutral compounds) of shifting the reference state for the binding equilibrium from the aqueous to an organic phase. Affinity can also be scaled by molecular size and the original measure of ligand efficiency [68] was obtained by dividing the standard Gibbs free energy of binding (ΔG°) by number of non-hydrogen atoms. Reference states also need to be considered carefully when affinity is scaled because relative values of ligand efficiency for compounds differing in molecular size depend on the standard concentration used to define ΔG° [69]. Whether one scales or offsets affinity or potency, one is implicitly assuming that the relationship with the relevant physicochemical or molecular property is linear. When biological activity is offset by lipophilicity one assumes a unit slope in the linear relationship while scaling by molecular size implies an assumption that Kd and IC50 values in all assays will tend to the same concentration (usually 1 M) in the limit of zero molecular size. An alternative to using efficiency metrics for evaluating compounds that differ in their activity and physicochemical characteristics is to fit affinity or potency to measures of lipophilicity and/or molecular size and use the residuals to quantify the extent to which compounds beat (or are beaten by) the underlying trend in the data. One advantage of analyzing measured biological activity in this manner is that the results are invariant with respect to standard concentration. This is not the case when ligand efficiency is ‘corrected’ for molecular size [70].

The ClogPalk model calculates logPalk as the sum of two components, one of which can be taken as a measure of molecular size and the other of polarity. This may prove useful in gaining a better understanding the nature of drug-likeness although the assumption that marketed drugs represent a separate and contiguous region of chemical space can be challenged. One issue that must be addressed when using lipophilicity in modeling is whether logP or logD is more relevant to phenomena of interest. Typically, logP will be more relevant when compounds bind to their targets (and anti-targets) in their ionized forms while logD is more likely to be the measure of choice when the concentration of neutral form is a limiting factor as would normally be the case for aqueous solubility and passive permeation through membranes. It is instructive to write logD as a function of logP and the fraction of compound in its neutral form (Fneut):

$$\log D\left( {pH} \right) = \log P + \log F_{neut} \left( {pH} \right) $$
(5)

When logD is used to model phenomena that are influenced by ionization, the responses to partition coefficient and ionization in the resulting models are constrained to be equal in magnitude even though the two components of logD describe completely different aspects of a compound’s behavior. In drug discovery programs, logD (at a single pH) is usually the only lipophilicity measurement that is available on a routine basis and options are limited if one needs to use an experimentally measured lipophilicity value. If, however, logD is calculated from predicted values of logP and pKa, there is no longer any need to use the composite parameter and the response of the property of interest to each component of logD can be modeled independently. One advantage of ClogPalk over predicted logPoct in this type of analysis is the ease with which it can be resolved into molecular size and polarity components. These could in turn be combined with predicted (possibly at more than one pH) logFneut to create a basis for describing physicochemical characteristics of compounds in the context of drug discovery.

We have described a method for predicting alkane/water partition coefficient from molecular structure and make the source code publicly available so that the ClogPalk model can be evaluated more widely. This could also have the benefit of drawing more data into the public domain. Our study also shows how views of chemistry can be imposed automatically on chemical structures using systems of SMARTS definitions in a manner that is both reproducible and transparent. We hope that the model will prove useful in pharmaceutical research and that our study will stimulate debate about the relative merits of different partitioning systems.