VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

Why Mathematics? | Jarque–Bera Skewness, Kurtosis and Residual Normality Checks

A Normal distribution has zero skewness and ordinary kurtosis three, so deviations in sample skewness and kurtosis provide two specific clues against normality. The Jarque–Bera statistic squares and scales those deviations, adds them, and compares the result with an asymptotic chi-square distribution on two degrees of freedom. This is why mathematics matters in residual checking: shape words such as symmetric, heavy-tailed and peaked become defined moment calculations, while the test's blind spots and sample-size limits stay visible. Preserve the evidence trail: state the mathematical object, calculate a small case, verify the result independently, vary one assumption and explain the boundary. That predict–calculate–check–critique cycle builds numeracy and transferable problem-solving without promising intelligence, admission, income or employment from one method. For a fuller investigation, keep a computation log with the original input, every declared convention, the hand-worked result, the software result, a residual or reconstruction check, and one deliberately awkward case. Ask what information the method uses, what it discards, which assumption provides the guarantee, and which quantity measures failure. Repeat after changing scale, precision or one parameter. A student should explain why the output moved, not merely observe that it changed. Parents and educators can support this by valuing clear diagrams, labelled units, honest uncertainty and corrected reasoning as much as speed.

Quick navigation: Why this mathematics matters · How the mechanism works · Worked example and core equations · Four deeper ideas · Twelve practical investigations · Limits and misconceptions · A learning route for students · Guidance for parents and educators · Frequently asked questions · Useful next reading and sources


Why this mathematics matters

Mathematics is important here because the useful result is not merely a picture or a fast answer. It is a chain of reasons: a representation records selected information; an equation transforms it; an invariant explains what survives; and a limit states where the conclusion may fail. Students who can narrate that chain are learning transferable problem-solving skills, not only specialist vocabulary.

The search intent behind ‘why mathematics is important’ is often practical: where do algebra, geometry, probability and numerical reasoning actually earn their place? This mechanism gives a concrete answer. It turns a large task into smaller checkable operations, and it lets a learner distinguish a theorem, an implementation convention, a measured result and an interpretation.

Did You Know? The foundational source is Jarque and Bera's 1980 Economics Letters paper90024-5). A current implementation reference is statsmodels' official jarque_bera documentation. Reading both prevents a common mistake: attributing every modern feature to the original publication or assuming software defaults are universal mathematics.


How the mechanism works

Start with observations or model residuals and calculate their mean. Form central moments using deviations from that mean. Standardise the third central moment by the variance to the power three halves to obtain skewness, and standardise the fourth central moment by the variance squared to obtain ordinary kurtosis. Compare skewness with zero and kurtosis with three. The Jarque–Bera statistic gives each squared departure an asymptotic scaling derived under normality. Large values indicate that at least one of these two moment signatures is inconsistent with the null approximation. The test should accompany plots and model-specific diagnostics, not replace them.

Using central moments m_k=(1/n) sum_i (x_i-xbar)^k, define S=m_3/m_2^(3/2) and K=m_4/m_2^2. Then JB=n(S^2/6+(K-3)^2/24). Under a Normal null and regularity conditions, the statistic converges in distribution to chi-square with two degrees of freedom. Some software reports excess kurtosis K-3 while other interfaces report ordinary kurtosis K; substituting one for the other incorrectly changes the formula. Finite-sample bias corrections can also change calculated skewness or kurtosis, so matching a reference requires matching moment conventions rather than comparing only the test name.

A useful four-column notebook for this topic is object, rule, guarantee, caveat. In the first column, name what the algorithm receives and stores. In the second, write one operation without skipping its conditions. In the third, state exactly what the mathematics guarantees. In the fourth, record a boundary case, approximation or modelling choice. This small routine makes advanced mathematics readable because it keeps symbols attached to meaning.


Worked example and core equations

For the symmetric sample [-2,-1,0,1,2], the mean is zero. With division by n, m2=(4+1+0+1+4)/5=2, m3=0 and m4=(16+1+0+1+16)/5=6.8. Therefore S=0 and ordinary K=6.8/2^2=1.7. The statistic is JB=5(0^2/6+(1.7-3)^2/24)=5×1.69/24 about 0.3521. A chi-square distribution with two degrees of freedom gives an asymptotic upper-tail probability about 0.8386. That large value does not prove the five numbers came from a Normal population; the sample is tiny and the asymptotic test has little evidence to work with.

How to audit the calculation

  • Recompute each intermediate value from the definition before relying on a shortcut.
  • Keep indices, coordinate order, units and normalisation visible.
  • Test one case with a known exact answer.
  • Name any random choice, tolerance or boundary convention.
  • Compare with a slower reference calculation whenever possible.
  • Separate numerical agreement from proof that the real-world model is appropriate.

The worked numbers are deliberately small. A hand calculation can expose a sign error, reversed convention or missing scale factor before thousands of values make the same error harder to see. After the tiny case succeeds, increase size gradually and measure both accuracy and computational work.


Four deeper ideas

Skewness measures directional asymmetry

The cubed deviation keeps sign, so unusually distant observations on the right and left contribute in opposite directions. Dividing by the standard deviation cubed makes the result dimensionless. A skewness near zero can occur for a symmetric distribution, but it can also arise from offsetting asymmetries. One moment never contains the full shape.

Kurtosis is a fourth-moment comparison

The fourth power emphasises distant observations on both sides. Ordinary Normal kurtosis is three; excess Normal kurtosis is zero. Describing kurtosis only as peakedness is incomplete because tail weight and the frequency of extreme deviations strongly affect it. In small samples, one unusual value can move the fourth moment dramatically.

Two moment conditions create two degrees of freedom

The test combines departures in skewness and kurtosis, each contributing one asymptotic component. Under the Normal null, their appropriately scaled joint behaviour leads to chi-square with two degrees of freedom. This is a compact omnibus check for those two signatures, not an exhaustive distance between distributions.

Residual normality is not the same as raw-data normality

Many regression procedures make assumptions about conditional errors, not about the marginal distribution of the response or predictors. A raw outcome can be skewed while residuals from a suitable model are well behaved, and Normal-looking raw data can still yield dependent or heteroscedastic residuals. Always identify which mathematical object is being tested.


Twelve practical investigations

1. Symmetric Five-Point Check

The sample is [-2,-1,0,1,2]. Calculate m2, m3, m4, skewness, kurtosis and JB by hand.

What the mathematics reveals: Symmetry sets the third central moment to zero. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: Five values cannot validate an asymptotic reference well. This boundary belongs beside the result so the example remains useful rather than overstated.

2. Ordinary Versus Excess Kurtosis

One library reports K=3.4 and another reports 0.4. Read documentation and convert conventions before using the formula.

What the mathematics reveals: The two numbers may describe the same fourth-moment shape. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: Subtracting three twice creates a false discrepancy. This boundary belongs beside the result so the example remains useful rather than overstated.

3. Single Outlier

A mostly compact sample gains one extreme observation. Recalculate skewness, kurtosis and JB with an auditable reason for both versions.

What the mathematics reveals: Third and fourth moments respond strongly to distance. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: Removing a genuine case only because a test rejects is inappropriate. This boundary belongs beside the result so the example remains useful rather than overstated.

4. Regression Residuals

A linear model's residual histogram looks right-skewed. Check the residuals, Q-Q plot, mean specification, leverage and JB result together.

What the mathematics reveals: Moment evidence can guide model criticism. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: A skewed pattern may reflect omitted nonlinear structure. This boundary belongs beside the result so the example remains useful rather than overstated.

5. Time-Series Residuals

Residuals pass JB but show lagged dependence. Add an autocorrelation diagnostic such as Ljung–Box.

What the mathematics reveals: Marginal shape and serial independence are different properties. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: Normal-looking residuals can still violate time-series assumptions. This boundary belongs beside the result so the example remains useful rather than overstated.

6. Heteroscedastic Errors

Residual spread grows with fitted value while shape remains symmetric. Inspect variance diagnostics in addition to JB.

What the mathematics reveals: Zero skewness does not imply constant variance. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: A Normality test is not a heteroscedasticity test. This boundary belongs beside the result so the example remains useful rather than overstated.

7. Large Sample Sensitivity

A dataset with 200,000 observations produces a tiny p-value. Report effect sizes, plots and consequences for the intended estimator.

What the mathematics reveals: Statistical detectability grows with n. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: Tiny shape deviations are not automatically practically important. This boundary belongs beside the result so the example remains useful rather than overstated.

8. Moment-Matched Alternative

A constructed non-Normal distribution has skewness zero and kurtosis three. Simulate its samples and compare JB with an empirical-distribution test.

What the mathematics reveals: Matching two moments does not determine a distribution. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: No two-moment test can see every alternative. This boundary belongs beside the result so the example remains useful rather than overstated.

9. Bootstrap Exploration

Finite-sample calibration is uncertain for a specialised model. Simulate or bootstrap under a defensible fitted null while preserving design features.

What the mathematics reveals: Reference distributions can be studied empirically. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: A bootstrap is only as appropriate as its resampling model. This boundary belongs beside the result so the example remains useful rather than overstated.

10. Grouped Data

Only bin counts are available rather than individual observations. Avoid pretending bin midpoints reproduce exact third and fourth moments.

What the mathematics reveals: Data aggregation discards shape information. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: An approximate JB result may be dominated by binning choices. This boundary belongs beside the result so the example remains useful rather than overstated.

11. Software Reproduction

Statsmodels returns statistic, p-value, skewness and kurtosis. Recompute moments with the documented convention and match each returned component.

What the mathematics reveals: Component checks isolate errors faster than comparing one p-value. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: Version and missing-value handling must be recorded. This boundary belongs beside the result so the example remains useful rather than overstated.

12. Communication

A report states residuals are not normal. Describe the observed skewness, kurtosis, sample size, plot and inferential consequence.

What the mathematics reveals: A diagnosis becomes useful when magnitude and context are visible. Ask the learner to show the precise equation, inequality, index rule or invariant that supports this conclusion, then check it on one small example.

Limit to keep visible: A binary label hides uncertainty and practical relevance. This boundary belongs beside the result so the example remains useful rather than overstated.


Limits and misconceptions

Jarque–Bera targets departures expressed through skewness and kurtosis and can miss non-Normal distributions sharing those moments. The chi-square reference is asymptotic, so small-sample p-values may be poorly calibrated. Very large samples can detect tiny, practically irrelevant departures. Moments are sensitive to outliers and may be unstable for heavy-tailed processes whose population moments do not exist. Estimated residuals are constrained by the fitted model, and dependence or heteroscedasticity changes the diagnostic context. Non-rejection does not prove normality, while rejection does not automatically invalidate every coefficient estimate or large-sample inference.

Five misconceptions to challenge

  • Kurtosis is always excess kurtosis: Some formulas use ordinary kurtosis three under Normality; conventions must be checked.
  • A large p-value proves the data are Normal: It only means this test did not find strong evidence against its null approximation.
  • The test detects every non-Normal shape: It sees deviations through skewness and kurtosis and can miss alternatives with matching moments.
  • Raw variables must be Normal for regression: The relevant assumptions usually concern conditional errors and the inferential procedure.
  • One rejected test destroys all analysis: Consequences depend on sample size, estimand, dependence, variance structure and chosen inference method.

Another broad misconception is that advanced mathematics automatically creates intelligence, admission, income or employment. It does not. Learning it can strengthen modelling, abstraction, calculation and explanation when practice is deliberate, but opportunities also depend on interests, communication, domain knowledge, education pathways and many circumstances outside one topic. Keep claims specific and options open.


A learning route for students

Move from a visible trace to a symbolic rule, then to code and critique. For every step below, prepare three pieces of evidence: a correct hand example, a boundary or failure case, and a short explanation using the relevant invariant. Do not advance merely because a library returned a number.

Step 1: Calculate central moments

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 2: Standardise the third moment as skewness

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 3: Distinguish ordinary and excess kurtosis

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 4: Evaluate the jarque–bera formula

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 5: Use chi-square with two degrees of freedom

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 6: Identify the tested object as data or residuals

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 7: Compare moment checks with q-q plots

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 8: Recognise outlier sensitivity

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 9: Separate normality from independence and equal variance

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 10: Interpret rejection and non-rejection cautiously

Start with the smallest non-trivial instance. Predict the result, perform the calculation, and compare it with a reference. Change one assumption—size, spacing, sign, threshold, tolerance or data distribution—and explain which part of the reasoning changes. Finally, teach the step without code. That predict–calculate–vary–explain cycle is a strong test of transferable understanding.

A four-week practice plan

  • Week 1 — vocabulary and diagrams: define each object, redraw the core mechanism and reproduce the worked example.
  • Week 2 — equations and manufactured tests: derive the key relation and test inputs with known answers.
  • Week 3 — implementation and evidence: use a trusted library, record parameters and compare with a transparent baseline.
  • Week 4 — transfer and critique: apply the mechanism to a new context, report limits and identify when a simpler or different method is better.

Guidance for parents and educators

Ask ‘what stays true?’ and ‘what could make this conclusion fail?’ before asking for speed. Invite the student to draw the input and output, label units, estimate the answer and locate the first step that disagrees with a reference. These prompts reveal conceptual understanding more clearly than memorised terminology.

Advanced enrichment should sit beside secure school foundations in algebra, functions, geometry, statistics and computational thinking. It need not accelerate a student into a fixed career identity. A healthy goal is curiosity with discipline: the learner becomes comfortable reading unfamiliar notation, checking an example, revising a model and communicating uncertainty.

Evidence prompts for a useful conversation

  • Which quantity is observed and which is inferred?
  • Which step saves work, and why is it allowed?
  • Is the claim exact, approximate, probabilistic or empirical?
  • What units and conventions are in use?
  • Which input makes the method struggle?
  • What simple baseline could check the answer?
  • What would count as evidence that the chosen parameters are poor?

Mini-project assessment

A strong mini-project contains the original question, a small reproducible dataset, a hand-worked example, code or a spreadsheet trace, at least one boundary test, a comparison with a baseline, and a paragraph on limits. Assess the reasoning trail as well as the final output. If a student can explain why a surprising result appeared and repair the model, that is valuable mathematical progress even when the first attempt was wrong.

Ten evidence checks

Check 1: Calculate central moments

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 2: Standardise the third moment as skewness

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 3: Distinguish ordinary and excess kurtosis

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 4: Evaluate the jarque–bera formula

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 5: Use chi-square with two degrees of freedom

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 6: Identify the tested object as data or residuals

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 7: Compare moment checks with q-q plots

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 8: Recognise outlier sensitivity

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 9: Separate normality from independence and equal variance

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.

Check 10: Interpret rejection and non-rejection cautiously

Prepare a one-page evidence card for this capability. Put the definition or formula at the top, a hand-worked example in the middle, and a deliberately awkward input at the bottom. Beside each line, state what would make the result wrong: a convention, unit, index, random choice, approximation or modelling assumption. Reproduce the answer with an independent baseline and explain any difference before moving on. The card is complete only when another learner can follow it without guessing hidden parameters.


Frequently asked questions

What does Jarque–Bera test?

It checks whether sample skewness and kurtosis jointly match their Normal-distribution values asymptotically. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

What values does Normality imply?

Population skewness zero and ordinary kurtosis three, or excess kurtosis zero. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

Why are there two degrees of freedom?

The statistic combines two moment restrictions: one for skewness and one for kurtosis. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

Is the test exact in small samples?

No; its familiar chi-square calibration is asymptotic. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

Can a non-Normal distribution pass?

Yes, especially with limited power or an alternative sharing similar third and fourth moments. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

Does rejection make OLS coefficients biased?

Not by itself; bias, efficiency and standard-error validity depend on other assumptions. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

Should raw predictors be tested for normality?

Usually the relevant object is the model error or residual structure, not every raw predictor. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

Why inspect a Q-Q plot too?

A plot shows where departures occur instead of compressing shape into one number. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

What should students know first?

Means, variance, powers, central moments, standardisation and chi-square distributions. State the relevant assumptions and parameters whenever the answer is used in a real calculation.

What broader lesson does it teach?

A concise statistic can test selected mathematical signatures while leaving other features of a distribution unseen. State the relevant assumptions and parameters whenever the answer is used in a real calculation.


Useful next reading and sources

Begin with Jarque and Bera's 1980 Economics Letters paper90024-5) for the historical result and statsmodels' official jarque_bera documentation for a maintained modern interface or reference. Then connect the mechanism to these verified eduKateSG articles:

For the broader series, continue at eduKateSG Mathematics. Use primary sources for definitions and results, official documentation for present software behaviour, and experiments for performance on the actual task. Those evidence types support different claims and should not be merged casually.


Final takeaway

Why is mathematics important in this topic? Because it makes an invisible mechanism inspectable. Definitions say what the objects are. Equations show how information moves. Proof ideas explain what may safely be reused or approximated. Worked examples catch mistakes, while limits prevent a useful method from becoming an exaggerated promise. That combination of optimism and care is one of the lasting benefits of mathematics education.

Discover more from eduKate Singapore

Subscribe now to keep reading and get access to the full archive.

Continue reading