In

**my last post**, I reviewed GOVSS Running Power, which is the model adopted by Runscribe Plus.
As a recap :

**GOVSS power**is a total energy model which includes both the external and the internal cost to move the limbs in relation to center of mass. It also accounts for wind and the kinetic component that play a prominent role during rapid, high speed transient running events such as a track sprint.
In this post, I review the

In a

I also review the same whitepaper and appraise the validation they've disclosed (Part B) and describe several aspects of what it shows AND do not show. Readers who are scientifically inclined like me will be interested in this section.

**External Energy Summation Approach (EESA)**applied to center of mass which can then be converted to an external power (Part A). I will describe the model in a bit, but one observation before that.In a

**Stryd whitepaper**published yesterday, the writeup suggested that ground reaction forces are being employed in the calculation of components of power. After reading that, I hold a level of confidence that the EESA algorithm is used in some capacity, either at a very complex level or a very simplistic level with some inhouse modifications.
I also point the reader to my

**Primer on Running Power**in order to get a feel for the changes in mechanical energy during running and how a 9 / 10-DOF IMU basically works.

__PART A : Fundamentals__**I. EESA Approach for Calculating External Power**

In the EESA approach, the vertical (Y), anterio-posteral (X, fore-aft) and lateral ground reaction forces (Z) are used to calculate the instantaneous speed of body center of mass.

The resulting velocities are used to calculate the change in potential energy function and kinetic energy function to

**lift and accelerate the body center of mass.**(Note : EESA has been coined by me, for lack of a better term).
The potential energy function tracks the work done to lift the center of mass.The kinetic energy function contains the velocities to move in a forward and lateral direction. In common running situations, lateral motion maybe neglected but keeping with the intent to account for all 3D motion, the lateral kinetic energy is also included in the general equation.

The computational equations have been summed up in this mathematical infographic in Figure 1. F

_{x}, F_{y}and F_{z}are the forces in the forward, vertical and lateral directions. Their speed counterparts are expressed as v_{x}, v_{y}and v_{y}. Please click to zoom in._{}

Figure 1 : EESA computational approach for total external power for running. Adapted from Minetti et.al (2002). Click to zoon in. |

Referring to Figure 1, the

**EESA algorithm**is the following :

STEP 1 : The X, Y and Z velocity functions are an integral of the ratio of the respective ground reaction forces and mass, or in other words the axis specific accelerations. After integration is performed, a constant has to be added to the right side which maybe different for level running and gradient running (Cavagna constant).

STEP 2 : Since velocity is a vector, the resultant running velocity is calculated by the sum of the squares of the 3D velocities.

STEP 3 : Kinetic energy as a function of time is half of mass times the resultant velocity squared.

STEP 4 : Vertical displacement of center of mass is the integral of vertical velocity with respect to time. After integration is performed, a constant has to be added on the right side (Cavagna constant).

STEP 5 : The potential energy as a function of time is mass times gravitational acceleration times the vertical displacement of center of mass.

STEP 6 : The total energy of the center of mass as a function of time is a summation of the potential and kinetic energies. This will fluctuation function in time, with a minimum occuring at the middle of stance phase. For level running, the curve is symmetric. For gradient running, the curve is lopsided to the right side for uphills and to the left side for downhills.

STEP 7 : Power - Pext - is the time derivative of the summation of potential and kinetic energy functions.

This is the generalized form of EESA.

The

**disadvantages**of the EESA model are the following :

**A) It accounts only for the external power**to move center of mass. It does not take into the account another source of cost demand, that to swing the arms and the legs. Since it is not a total energy requirement to run, magnitude of calculated power will be lesser compared to a total energy approach such as GOVSS.

**B) It doesn't tell us what goes on inside the body.**External mechanical work reflects the overall behavior of the whole body center of mass mechanics. Unfortunately, this black box approach seldom provides us with a direct understanding of what is going on inside the body. It is difficult to draw specific relationships using just sheer "watts" to things like forces, moments and storage-recoil mechanisms at the level of joints, muscles and tendons.

**II. Stryd Model**

Chief features as I observe are :

**Ground forces estimated from acceleration signatures :**From the whitepaper, it seems that Stryd employs the equations in the EESA framework for external power in it's model. Otherwise, there'd be little meaning behind their efforts to approximate ground forces.

Ground forces are estimated from the acceleration-time signatures in the 3 axes multiplied by mass of the subject runner. What the whitepaper attempts to show is a validation of that force profile against force plate data. There is absolutely no measurement of forces, they are only estimated from the accelerations.

**Leg symmetry assumption :**Since the Stryd comes simply as one footpod, the mechanics in one leg is assumed to be an overall representation of the body's movement. This assumption carries through into the external power calculation.

**Scaling factors for power on gradients :**For outdoor gradient running, the ratio of negative and positive potential and kinetic energies are no longer in the ratio of 1:1 and mirrored (see Figure 1).

Stryd employs scaling factors for uphills to account for the greater degree of concentric work, in effect increasing the modeled external power. Conversely, they employ a negative scaling for downhills to account for the greater eccentric work. People have found varying degrees of correlation when comparing to their rates of perceived exertion.

These scaling factors came as a firmware update to Stryd users in early 2017. There has been little in the way of documentation and validaton of the approach for a wide range of runners so this area is an unknown. More about this is discussed in Part B.III below.

**Indoor running distance / speed may differ :**A small desirable nuance in the model might be for indoor running where the Stryd model would account for the difference in treadmill belt speeds when estimating a relative forward velocity. I do not think this is the case which explains why several people find a small discrepancy between treadmill recorded distance / pace and Stryd distance / pace. I think that the magnitude of this discrepancy maybe less than 5%.

**Form Power :**Stryd adds a distinction by singling out vertical work rate done "in place", i.e the power required to displace the center of mass vertically without considering forward displacement. This is expressed as a separate metric called

**Form Power**which other platforms do not highlight. I take the liberty to express it in the following form :

**Lifting In-Place Power (due to vertical oscillation)**=

**Step Rate**x

**m**x

**g**x

**V**

_{disp}where :

Vdisp (m) = Vertical Oscillation [total vertical distance covered by center of mass]

Step Frequency (Hz) = 1/(Aerial Time + Ground Contact Time) = 1/60 x (Step Rate)

m (kg) = mass

g (m/s

The consensus in literature around lifting-in-place power is conflicting. Some studies show that low vertical oscillations are correlated with better running economy (lower metabolic cost) while some studies show the exact opposite (higher metabolic cost).

m (kg) = mass

g (m/s

^{2}) = gravitational acceleration
I've called it lifting in-place power to distinguish it from slope lifting power when running up a hill.

Take note that this component of power is directly proportional to step frequency. Since step frequency is made up of the inverse of the sum of aerial time and contact time, this would suggest that increasing step frequency is done by decreasing contact time and/or decreasing aerial time. This couples with and affects Vdisp.

The latter point is interesting actually. It has been suggested that dropping vertical oscillation must be accompanied by an increase in step frequency (see figure above). But this increases the internal work needed to sustain high step frequencies, thereby increasing the overall metabolic cost and worsening running economy. Studies have published data backing this negative correlation. A confounding variable in these studies maybe how adapted and well trained the runners were to sustain high step frequencies.

One point is clear. Studies that have looked at leg kinematics during actual running races find that top tier runners are almost always front foot strikers and show the lowest ground contact times compared to the rest of the field (eg Hasegawa et.al, 2007). Again, this gives more power to ground contact time being an actionable variable. In this way, atleast in my mind, ground contact time and vertical oscillation are "coupled" variables which are again related to the running speed, as the figure above shows.

Another point to keep in mind is that leg spring action contributes some of the force (and power) needed to oscillate upwards. Therefore, a runner with good spring mechanics provides lesser net force to lift himself than one without. This must mean not all vertical oscillation is "waste", as energy is recycled. The net positive power to oscillate is therefore lower than the suggested calculated value of lifting-in-place power.

For example, a 64kg runner at 3 Hz step frequency and 5cm of vertical oscillation requires a lifting-in-place power = 95 W. But if 30% of that is supplied by leg spring, the rest 70% is the net positive power that the runner must produce. This equates to around 66 W.

One point is clear. Studies that have looked at leg kinematics during actual running races find that top tier runners are almost always front foot strikers and show the lowest ground contact times compared to the rest of the field (eg Hasegawa et.al, 2007). Again, this gives more power to ground contact time being an actionable variable. In this way, atleast in my mind, ground contact time and vertical oscillation are "coupled" variables which are again related to the running speed, as the figure above shows.

Another point to keep in mind is that leg spring action contributes some of the force (and power) needed to oscillate upwards. Therefore, a runner with good spring mechanics provides lesser net force to lift himself than one without. This must mean not all vertical oscillation is "waste", as energy is recycled. The net positive power to oscillate is therefore lower than the suggested calculated value of lifting-in-place power.

For example, a 64kg runner at 3 Hz step frequency and 5cm of vertical oscillation requires a lifting-in-place power = 95 W. But if 30% of that is supplied by leg spring, the rest 70% is the net positive power that the runner must produce. This equates to around 66 W.

**Leg Spring Stiffness**: Another distinction that Stryd offers is displaying a mathematically calculated leg spring stiffness from**some of the equations**I described in a previous post. This maybe displayed for information only and I do not believe it is used to treat energy savings due to spring biomechanics. See part B.V below for more on this.

**RSS :**Native to Stryd is the Running Stress Score (RSS) that is a single number quantifying the effect of a daily run. One notes that this stress calculation is non-linear in nature as it credits higher volume and intensity in an exponential way. This thinking is similar to the weighted TRIMP method that assigns exponentially increasing weighting factors as exercise intensity increases. Although I don't know the exact algorithm used,**a simple formula I developed**approaches within 3% of Stryd RSS. This is based on Stryd's own RSS rules for different intensity zones.
It's as follows :

**RSS/min = A x e^(B x Pext/CP)**

where parameter A = 0.0758

parameter B = 3.1297

parameter B = 3.1297

Pext = External mechanical power

CP = Stryd Critical Power

**Wind :**The Stryd does not take wind into consideration. However, there are several reports of gusts negatively affecting reported power which seem to be a bug that is being investigated. See Part B.VII for more on this subject.

__PART B : Stryd Whitepaper Review__**I. Review of Stryd's Vertical Force-Time Curve**

Vertical power is the rate of change in potential energy. Multiple studies have shown that this component constitutes the majority share in the metabolic cost of normal running.

Since the Stryd footpod has no means to measure force directly, in order to get the correct estimate of force, the IMU must capture the time course of instantaneous vertical acceleration profile which is proportional to the force signature.

Continuing on, in order to get an accurate estimate of changes in potential work, the footpod IMU must capture time course of vertical displacement of center of mass.

An image showing the first of these elements is in Figure 2.

Figure 3 : Modeled vs actual vertical force-time signatures in a rear-footed runner for an unspecified running speed. Base image courtesy of Stryd. Markups by the me. |

It is not known what speed the runner was running at but looking at the force signature, it is clear that it was a rear foot runner. The model estimation and force plate data nearly match, particularly when you look at the highest peak vertical force which is important in derivative calculations of impulse and leg spring stiffness.

Some key observations as far as

**vertical force-time**(Figure 1) is concerned :

**1) Misrepresentation of first footstrike peak :**The Stryd models a nice rounded single peak force when there were actually two. This is significant because the footpod thinks that the footstrike is fore-footed when in reality it's rear-footed. The implications are :

a) The Stryd model neglects first impact peak. If the first rear-foot strike peak is completely neglected, that initial impact peak of landing will be distributed over an inaccurate and wider period of delta time which will suggest that there is no shock loading, when in reality there is.

b) Stryd's force profile estimation for a forward moving (or backward moving) fore-footed runner might be alright but it might be grossly over-looking rear footed mechanics by missing the first impact peak altogether.

b) Stryd's force profile estimation for a forward moving (or backward moving) fore-footed runner might be alright but it might be grossly over-looking rear footed mechanics by missing the first impact peak altogether.

c) If a runner changes gait mechanics on the fly due to the effect of different running surfaces or due to fatigue in a long race, this 'tuning' may not be captured properly by the model.

d) Gradients may substantially influence these errors. To get an idea of grade influences on the vertical force-time profile from empirical studies, please see Appendix image A4.

d) Gradients may substantially influence these errors. To get an idea of grade influences on the vertical force-time profile from empirical studies, please see Appendix image A4.

**2) Mismatch of contact time :**Although the actual and estimated signals are close, Stryd under-estimates initial footstrike and over-estimates the actual takeoff point with respect to time (Figure 2).

a) The ground contact time (GCT) is over-estimated. From the image, I estimate atleast 15-20 milliseconds greater than the force plate.

b) The stance-averaged vertical ground reaction force during GCT does not match 1-to-1 with the actual force plate data.

c) As a consequence of b), the Stryd estimated ground reaction impulse given by the product of force and GCT is different to the actual impulse.

d) Any calculation of aerial times, step lengths and step times using GCT will propagate the error through.

e) Since leg spring stiffness (LSS) is driven by GCT and involves a duty factor calculation treated with the maximum vertical ground reaction force, errors propogate into the LSS model as well.

f) Since the tests were carried out in the laboratory, the effect of gradients and different speeds on the error in GCT remains unknown.

**3) Effect of Running Speed on Force-Time Curve Not Discussed :**Stryd does not show the effect of running speed on the goodness-of-fit for vertical force curve.

That this important element is missing in the whitepaper prevents a discussion on the influence of variations among broader running speeds and broader gait mechanics. Within literature, researchers have found that simplistic vertical force-time curve models derived from spring mass models lose their goodness-of-fit as the running speed increases due to the presence of high frequency components from the acceleration of the lower limb.

This is where I'd exercise some caution. With the current state-of-the-art, I wonder if IMU's may still not be practical for application to short-distance, high speed track racing.

**4) Impact of Shoe Type to Force-Time Curve Not Discussed :**The impact of variations in footwear to the measured parameters is unknown. This is also an influencer of vertical ground reaction force profiles.

**5) Impact of Treadmill Slope to Force-Time Curve Not Discussed :**The whitepaper lacks a review of the force-time profile accuracy under the influence of slope (see Appendix image A4). Since step period generally decreases as slope increases and increases as slope decreases, what influence high running speeds have on the model fit when the slopes are greater than 7 degrees inclination is something important to document.

**vertical oscillation**, shown in Figure 3.

Some key observations as far as vertical oscillation is concerned :

**1) A close fit :**A 3.18% average error in vertical oscillation has been shown which is quite good. It is desirable to understand the experimental method, equipment used and the sample size of the runners to put this into context.

**2) Error Propagation :**I understand that a small error propagates into the Form Power calculation due to vertical oscillation error.

**3) The effect of gait parameters on this variation is not documented.**The estimation error with respect to gait parameters such as velocity and step duration should be additionally plotted, for example, in the form of a Bland-Altman plot.

**4) Explanation of influencing factors behind error :**I'm very interested to know if 3% average error is the best achievable given current level of technology. It is desirable to get some sort of explanation to the influencers of this error. Do random influences play into this?

**II. Review of Stryd's Horiztonal Force Model**

**Horizontal power**is a function of the rate of changes in kinetic energy. Studies have suggested that the horizontal work, particularly that component of generating horizontal propulsive force, constitutes more than one-third of the total cost of steady speed running.

Figure 6 : Stryd modeled forward speed change compared to force plate measures. Indicated accuracy = 95%. Grade of running surface unknown, but presumably level. Image courtesy of Stryd. |

A review shows the following :

**1) Accuracy is decent :**Like the vertical force-time profile, the horizontal force-time profile is presumably derived from the horizontal acceleration signature from the IMU. Stryd states that it captures the speed attenuation during the contact phase with 95% accuracy. This is not bad when considering that this anterio-posterior dynamics is a difficult one to capture.

**2) Error Propagation :**A 5% error in estimation of kinetic energy change propagates a proportional error into the work and power calculations.

**3) Influence of speed and slope not discussed :**Like in the case of the modeled vertical force-time profile, the influence of different speeds and slopes on the goodness-of-fit are not specifically mentioned. This is important to document in order to compare how the fit varies under different situations. See Appendix image A4 for grade influences on horizontal force-time curve curves.

**III. Basis of concentric and eccentric work scaling factors not discussed :**A technical basis for the scaling factors employed by the Stryd model to account for the dominance of concentric or eccentric work during gradient running is desirable (see Part A.II and Figure 1).

This correction was made as a firmware update in early 2017.

While I understand this is part of the secret sauce, some pedantic questions are necessary to be asked if we want to remain true to the estimation of a power :

A)

**Is the scaling used related more to vertical and horiontal ground forces or is it calibrated with metabolic costs?**What was the validation study behind these and will those findings translate well for the general public?

B)

**I**

**s the power scaling a continuous linear decrease**for downhill grades and

**a continuous linear increase**for uphill grades?

Let's suppose scaling is calibrated against metabolic costs. If power follows a strictly linear decrease for steep downhills while the metabolic cost decrease sharply, this will suggest that the metabolic efficiency increases. Conversely, if power follows a strictly linear increase for uphills while the metabolic cost follows a curvilinear relation to grade , that might suggest that metabolic efficiency becomes progressively worse. There are individual variations playing into metabolic cost dynamics on grade.

For downhills, a strict metabolic cost decrease may not even hold. For example, it has been documented that

**beyond a grade of -9 degrees,**

**the metabolic rate actually increases,**presumably from the high eccentric cost to maintain balance of center of mass. In other words, there is an optimum downhill angle beyond which metabolic cost increases.

How that scaling curve has been calibrated is of much interest to me, and I assume, to other scientifically minded runners.

C) Some reports indicate runners losing RPE-power correlation for gradient running. This begs the question whether the scaling factors should be something that is best left for the runner to tune and calibrate through the settings instead of being driven down from Stryd.

**VI. A Review of Stryd Statement on Correlation with VO2**

**Stryd states in the whitepaper that : "The external mechanical power reported by Stryd has a well established relationship with metabolic expenditure based on testing conducted by Stryd and other third party research teams. "**

Now I have done this too in the

**past during a VO2max test**, plotting the relationship of VO2 to W/kg. This can be done by absolutely anyone.
I consider the statement regarding "well-established relationship" to be a sleight of hand. In other words, if I take a powermeter that is algorithmically modeled in such away that external power is linearly proportional to running speed (atleast on flat terrain), ofcourse a VO2 test is going to show that ave VO2 at each speed is proportional to external power! This relationship has been "pegged" from the beginning due to speed being an input in the model.

**There is no unique science in this.**The linear relationship of VO2 to power is encouraging in as far as it only tells us that model algorithm involving speed works.

The next question would be :

**Can you use a running power meter be used to predict running economy?**This carries a risk of mis-estimation because we do not know how transferable such simple relations are going from indoors to outdoors.

The estimation gets worse when it is a formula derived from a book which based it on data from a limited sample of runners that you weren't a part of. I do not believe you can estimate metabolic cost this way with any reliable degree of accuracy just like HR or HR based formulas cannot estimate caloric expenditure with any reliable degree of accuracy.

Indeed, a study from the University of Guelph and presented at the recent Canadian Society for Exercise Physiology (CSEP) annual meeting in Winnipe challenged the idea.

The researchers found a significant difference in running economy between treadmill and track running for 11 experienced elite runners as measured by standard metabolic measurements. But in the same study, the Stryd power meter and formulaic implementations of economy couldn't pick up any difference between the two surfaces.

**OTHER ASPECTS :**

**V. Leg Spring Stiffness : Information Only Or Actually Used?**

For level running, we understand from scientific literature that the storage and recoil of energy in the lower limbs restores an appreciable amount of energy into the positive work phase. Thus, the mechanical efficiency of running maybe greater than 30% depending on the skill and mechanics of the runner. This efficiency of running

**has a documented**linear relationship to running speed.

Stryd calculates leg spring stiffness (LSS)

**using published models**derived from the mass-spring paradigm. But it is unclear how Stryd's model employs the stiffness into the mechanical work calculations to account for a "savings" in concentric work requirements. In contrast, the GOVSS model appreciates there maybe savings from efficiency increases as a function of speed and corrects the power demand depending on running speed.

So the question is whether leg spring stiffness is simply a metric displayed for information only or whether it is actually used in the model in a fashion as described in the para above? If it is not used, then someone can question the actual value of this. The LSS metric remains one of the most confusing metrics from a trainability standpoint.

In the context of a Stryd powermeter, we should be concerned about the apparent mechanical efficiency.

As alluded to in section V, human running involves energy storage and recoil going from the negative to positive phase. Several researchers have found that upto 40-50% of the energy stored during the eccentric phase can be returned to the concentric phase within the short time span of ground contact time for which those muscles remain in a loaded state.

To me, the way the efficiency is defined and what it takes into account (or what it doesn't) explains a lot of the differences in calculated efficiency between different running power models now arriving in the market. I suspect that an apparent mechanical efficiency value of 25% is artificially low, atleast for running on level and shallow slopes, if it didn't take into account energy storage and recovery mechanics between the negative and positive phases of running.

**VI. Apparent Mechanical Efficiency of Running = 25%**

The

**apparent mechanical efficiency**of running is defined as :**Meff, a**= ratio of external power (Pext) and metabolic rate (Pmet). Meff, a = Pext/Pmet.

The

**gross mechanical efficiency**of running is differentiated as :**Meff,g**= ratio of total power (Ptot) and metabolic rate (Pmet). Meff,g = Ptot/Pmet.

As alluded to in section V, human running involves energy storage and recoil going from the negative to positive phase. Several researchers have found that upto 40-50% of the energy stored during the eccentric phase can be returned to the concentric phase within the short time span of ground contact time for which those muscles remain in a loaded state.

**Maximum possible elastic energy storage**is defined in some papers (such as those written by Kram et.al) to be the difference between initial and minimum external energy of center of mass during the stance phase.**Energy return**is defined in the same papers to be the difference between the ending and minimum external energy of center of mass during the stance phase. The**maximum possible energy storage and recovery**is then taken as the smaller of these two values.To me, the way the efficiency is defined and what it takes into account (or what it doesn't) explains a lot of the differences in calculated efficiency between different running power models now arriving in the market. I suspect that an apparent mechanical efficiency value of 25% is artificially low, atleast for running on level and shallow slopes, if it didn't take into account energy storage and recovery mechanics between the negative and positive phases of running.

**VII. Effect of Wind on Stryd's Performance**

The Stryd powermeter has no way to account for wind effects in the power calculation. In this respect, it will under-report power by a factor proportional to the correct relative velocity cubed. By "correct", I mean that the wind measured has to be applied at the height of the runner, and not what is reported from a 10m or 30m wind tower.

That said, one of the "buggy" issues, as has been reported by several people both on the

**Stryd support forums**and the**Running Power Google Groups**, is the sensitivity of power to sudden wind gusts. Reports indicate that gusts cause unsteady spikes in power for some and dips in the reported power for others, which is physically incorrect if you were trying to maintain speed in the face of a headwind.
The root technical fault maybe with the barometer, which thinks that the a sudden pressure front is a change in pressure altitude. How that information is relayed through sensor fusion and into the Stryd algorithm to mess up the reported power is a mystery to me. Judging by the forums, even Stryd's engineers have a challenge grappling with this issue.

The fact that they may need several consistently gusty days outside to test what's wrong might mean the delay of a corrective action for users.

The fact that they may need several consistently gusty days outside to test what's wrong might mean the delay of a corrective action for users.

**VIII. Conclusions**

Stryd's description of the external running power model and a comparison of modeled variables against force plate data has been long in the making. It is appreciated but delivered a bit late.

From a brief reading, I assess that they employ the general EESA approach to external power with some "in-house" tweaking for uphills and downhills to account for net energy addition or dissipation.

Stryd is thinking several things, some unique, some literature driven, about the kinematics of running. I give them credit for that. However, it does not stop the questions about how the model employed will validate for a large number of runners in actual usage. This same question also goes for the GOVSS run power model.

The effect of running speed, footstrike variations and slopes on those errors were largely missing from the whitepaper. This was the most important aspect I would have liked to see. This unfortunately prevents an assessment of how closely IMUs can correctly decifer footstrike patterns across a broad range of runners, running speeds and terrain.

Though the stated errors in key variables and things like force-time curves are small, those errors propagate into the calculations of derived metrics. Users must be aware of this when trying to introduce running interventions to effect a change in some of these metrics.

It is hoped that this technical review will encourage them to release another round of whitepapers so we can understand that aspect. An independant scientific review from other laboratories is also desirable in order to establish the degree of reproducibility in these numbers.

With Stryd and Runscribe having published their running models, the lights fall onto Garmin. With a far greater user base, they should find impetus to publish their running power framework soon or risk a lukewarm interest from the market.

**In the next post, I'll explore how errors in estimated ground reaction forces translate into errors in the external power calculations from the EESA method. Stay tuned...**

__APPENDIX__

Figure A1 : An illustration of vertical ground reaction force-time curve along the gait cycle. Courtesy Weyand et.al (2010). |

## 1 comment:

I really like your article. It’s evident that you have a lot knowledge on this topic. Your points are well made and relatable. Thanks for writing engaging and interesting material. Online Assignment Help Assignment Help Gold Coast

Post a Comment