Here's One Thing You're Not Tracking About Your Miles Card

Here's One Thing You're Not Tracking About Your Miles Card

Singaporeans love their miles cards—but there’s one thing many forget to track: when those hard-earned points expire.

With many cards, you don’t earn miles directly. You earn points first, then convert them into miles. And that’s where it gets tricky. Different banks have different rules about expiry, and sometimes even cards from the same bank follow separate timelines.

Worse, the rules themselves can be confusing. Some points expire 5 years after they’re earned, while others expire 5 years from the start of the period they were earned in. Huh?

To help you stay on top of it all, we’ve broken down the expiry policies for major banks and cards in Singapore—so you don’t lose your points before you even get a chance to use them.

 

Guide: When do your credit card miles or points expire?

  1. Miles and points expiry summary by bank in Singapore (2025)
  2. American Express miles and points expiry
  3. Citibank miles and points expiry
  4. DBS points expiry
  5. HSBC Rewards points expiry
  6. Maybank TREATS Points expiry
  7. OCBC points expiry
  8. Standard Chartered 360° Rewards Points
  9. UOB UNI$ expiry

 

Miles and points expiry summary by bank in Singapore (2025)

Bank

Reward Type

Expiry

Applicable cards

American Express

Membership Rewards Points

No expiry

Amex The Platinum Card®, Amex Platinum Credit Card

KrisFlyer Miles (direct credit)

3 years

Amex Singapore Airlines KrisFlyer Credit Card, KrisFlyer Ascend Credit Card

HighFlyer Points

3 years

Amex Singapore Airlines Business Credit Card

Citibank

Citi ThankYou Points

60 months from card approval, in blocks

Citi Rewards Card

Citi Miles

No expiry

Citi PremierMiles Card

DBS

DBS Points

1 year from end of quarter earned

DBS Woman’s Card
Signature Card

No expiry

DBS Altitude Visa 

yuu Points

2 years

DBS yuu Card

HSBC

HSBC Rewards Points

37 months

HSBC TravelOne Card, HSBC Revolution Credit Card, HSBC Visa Infinite Credit Card

Maybank

TREATS Points

1 year from end of quarter earned (default)

Maybank Horizon Visa Signature Card, Maybank Manchester United Platinum Visa Card

No expiry

Maybank World Mastercard, Maybank Visa Infinite

OCBC

90°N Miles

No expiry

OCBC 90°N Card

OCBC$

2 years from month earned

OCBC Rewards Credit Card

Standard Chartered

360° Rewards Points

3 years from account opening (per cycle)

Standard Chartered Rewards+ Card

No expiry

Standard Chartered Journey Credit Card, Standard Chartered Visa Infinite Card

UOB

UNI$

2 years from end of quarter earned

UOB PRVI Miles Card, UOB Lady’s Card, UOB Preferred Platinum Visa Card

KrisFlyer Miles (direct credit)

3 years

KrisFlyer UOB Credit Card

 

American Express miles and points expiry

Amex Membership Rewards Points expiry

Good news if you hold an Amex credit card: Membership Rewards points don’t expire—as long as your card stays active and you remain enrolled in the Membership Rewards Programme. This means you can take your time accumulating points and planning your redemptions without worrying about a looming expiry date.

But take note—if your card is cancelled or you opt out of the programme, your points are at risk. Specifically:

  • Card cancelled: Points are forfeited immediately.
  • You unenrol from the programme: You have 30 days to redeem your points before they’re gone.

So if you’re planning to cancel, make sure you redeem your points first.

Popular cards that earn Amex Membership Rewards Points:

With the American Express The Platinum Card®, cardmembers earn 2 Membership Rewards points for every S$1.60 spent on regular purchases. For select merchants under the 10Xcelerator by Membership Rewards® programme, the earn rate jumps to 20 points per S$1.60, allowing for much faster accumulation.

Meanwhile, the American Express Platinum Credit Card offers 10 points per S$1.60 spent at participating Platinum 10Xcelerator partners, and 2 points per S$1.60 on all other eligible spend—making it a strong all-rounder for both lifestyle and everyday transactions.

American Express logo
Online Promo
Ideal for Dining and Lifestyle
for every full S$1.60 spend at participating Platinum 10Xcelerartor Partners
10 Membership Rewards Points
for every full S$1.60 on All Other Eligible Spend
2 Membership Rewards Points
on Membership Rewards® Points
No Expiry Date

When you’re ready to convert points to miles, do note that American Express charges a $20.38 fee (GST-inclusive) per transfer to frequent flyer or hotel loyalty programmes. Also, the conversion rate is 1 point = 0.55 miles, so it’s worth calculating whether a redemption gives you good value before pulling the trigger.

 

KrisFlyer miles expiry

Not all Amex cards go through the Membership Rewards system. Certain co-branded American Express cards credit KrisFlyer miles directly, skipping the points stage entirely. That means there’s no need to convert and no transfer fee—but there is a different kind of expiry to watch out for.

Amex cards that earn KrisFlyer miles directly include the American Express Singapore Airlines KrisFlyer Credit Card and the American Express Singapore Airlines KrisFlyer Ascend Credit Card.

American Express logo
Online Promo
Most convenient way to earn KrisFlyer miles
on eligible Singapore Airlines & Scoot flight bookings, KrisShop & Pelago purchases, with no cap
S$1 = 2 KrisFlyer miles
on eligible Grab Singapore transactions
S$1 = Up to 2 KrisFlyer miles
on all other eligible purchases
S$1 = 1.1 KrisFlyer miles

With these cards, all miles earned go straight into your KrisFlyer account. But KrisFlyer miles do expire, depending on your membership tier:

Member tier

Miles expiry

KrisFlyer Basic / Elite Silver / Elite Gold

3 years after the month in which the miles were earned (e.g., miles earned in July 2022 expire on 31 July 2025 at 23:59 SGT)

PPS Club

No expiry—as long as PPS status is maintained

PPS Club lapse (you don’t qualify for PPS Club membership again)

Expiry is reset to 3 years after the downgrade month

Source: KrisFlyer Terms and Conditions

Note: Miles earned via promotions or contests may expire sooner (e.g., within 1 year), and expired miles cannot be extended.

Members can pay to extend soon-to-expire KrisFlyer miles:

  • KrisFlyer Basic: Extend by 6 months
  • Elite Silver / Gold: Extend by 1 year
  • You can pre-extend up to 5 months ahead in blocks of up to 3 months

 

HighFlyer points expiry

If you’re using The American Express® Singapore Airlines Business Credit Card, you’ll be earning HighFlyer points. These points are meant for businesses and can be redeemed for flights, upgrades, and other perks under the Singapore Airlines HighFlyer programme.

HighFlyer points follow a third set of expiry rules:

  • HighFlyer points expire 3 years after the month they were earned, at 23:59 SGT on the last day of that month
  • Example: Points earned in Jul 2022 will expire on 31 Jul 2025 at 23:59 SGT

 

Citibank miles and points expiry

Citi ThankYou Points expiry (Citi Rewards Card)

Citibank’s rewards system can be a little tricky—especially if you hold the Citi Rewards Card, which earns ThankYou Points. These don’t expire individually based on when you earn them. Instead, they expire in fixed 60-month blocks that begin when you’re first approved for the card.

Let’s break it down. When you're approved for the Citi Rewards Card, your first Points Validity Period kicks off and lasts 60 months (five years). All the points you earn during this period will expire at the same time—at the end of that 60-month window.

When the 60 months are up:

  • All points from that period expire
  • A new 60-month cycle begins, and any points you earn from then on will expire at the end of the new period

So even if you earned some points in Month 59, they’ll still expire along with your earlier points from Month 1.

Unofficial tip: Among seasoned miles chasers, it’s commonly accepted that there’s a 3-month grace period after the 60-month expiry date. While this isn’t published in Citi’s official 10X Rewards terms nor its Cardmembers Agreement, many users have reported being able to redeem points during this window. Still, it’s safest not to rely on it entirely—especially for high-value redemptions.

You’ll receive a reminder 3 months before expiry in your credit card statement—though you probably won’t remember what you spent five years ago, so a little tracking of your own may help.

Citibank logo
MoneySmart Exclusive
FASTER REWARD FULFILMENT | 10X POINTS FOR SPENDS
on Online Grocery, Food Delivery, Ride-Hailing
S$1= 10X Points
for in-store shopping purchases at Department Store, Clothing Stores
S$1= 10X Points
for all other purchases
S$1= 1X Point
MoneySmart Exclusive:

Apply and spend S$500 within 30 days to choose your reward: S$380 Cash Reward or 6,140 SmartPoints (worth up to S$499 of Gifts) and receive them as quickly as 5 weeks after meeting the spend criteria!

 

PLUS, double your excitement with a chance to win the ultimate S$15,000 getaway to your dream destination in our exclusive lucky draw! T&Cs apply.

Valid until 30 Jun 2026

 

Citi Miles expiry (Citi PremierMiles Card)

Prefer a no-fuss option? The Citi PremierMiles Card earns Citi Miles, and here’s the beauty of it: they never expire. You can accumulate them over the years, redeem when you want, and not worry about complicated validity windows or T&C gymnastics.

Citibank logo
MoneySmart Exclusive
FASTER REWARD FULFILMENT | EARN CITI MILES
Local Spend
S$1 = 1.2 miles
All Foreign Currency Spend including Retail and Online
S$1 = Up to 2.2 miles
Selected Online Hotel Bookings
S$1 = Up to 10 miles
MoneySmart Exclusive:

Apply and spend S$500 within 30 days to choose your reward: S$380 Cash Reward or 6,140 SmartPoints (worth up to S$499 of Gifts) and receive them as quickly as 5 weeks after meeting the spend criteria!

 

PLUS, double your excitement with a chance to win the ultimate S$15,000 getaway to your dream destination in our exclusive lucky draw! T&Cs apply.

Valid until 30 Jun 2026

 

DBS miles and points expiry 

DBS offers a variety of rewards cards, but not all of them earn the same type of points—and each point type comes with its own expiry rule. If you’re juggling multiple DBS cards, it’s worth knowing which system your card uses, and when your points might disappear.

DBS Points expiry

For most DBS rewards cards—including the popular DBS Woman’s Card—you’ll be earning DBS Points. These points expire 1 year from the end of the quarter in which they were earned.

What does that mean in practice? Let’s say you earned points in February (Q1). Those points would expire at the end of March the following year.

This quarterly rule makes tracking a little tricky, since you’ll need to keep tabs not just on when you spent, but which quarter your spend fell into. And unlike some other banks, there’s no blanket “2-year” or “5-year” lifespan—you really need to know your quarters.

If you hold the DBS Altitude Visa Signature Cardor the DBS Vantage Visa Infinite Card, there’s no need to stress. The DBS Points you earn on this card don’t expire.

DBS logo
Online Shopping
on Online Purchases
S$5 = 5 DBS Points (2 Miles per S$1)
on Other Purchases
S$5 = 1 DBS Point (0.4 Miles per S$1)
e-Commerce Protection for Online Purchases
Complimentary
DBS logo
Online Promo
Earn Miles That Never Expire
Local Spend
S$1 = 1.3 miles
Overseas Spend (made in foreign currency)
S$1 = Up to 2.2 miles
on DBS Points earned
No Expiry

 

yuu Points expiry

If you’re using the DBS yuu Card, you’re earning yuu Points instead of DBS Points. These come with a simpler expiry policy: 2 years from the date the points are awarded, as long as you don’t spend them.

However, tracking expiry dates isn’t exactly straightforward. The only way to see when your points were awarded (and therefore, when they’ll expire) is by tapping into the “Points Balance” section of the yuu app. So if you’re trying to plan ahead, make it a habit to check in there regularly.

DBS logo
Online Promo
at participating merchants with no min. spend
5% cash rebates
spend min. S$800 & at 4 participating merchants per calendar month
Up to 18% cash rebates
on all other spend
0.25% cash rebates

 

HSBC Rewards points expiry

HSBC takes a slightly different approach to rewards expiry. If you're collecting HSBC Rewards Points, they’ll expire at the end of 37 months from the month after the points are awarded. So, not quite 3 years, and not quite 4 either.

Let’s simplify that with an example:

  • Points earned in Aug 2023 will expire on 30 Sep 2026
  • Points earned in Sep 2023 will expire on 31 Oct 2026

This 37-month system is consistent across most cards, unless otherwise stated by HSBC. It gives cardholders a relatively generous redemption window—but the exact expiry date can feel slightly arbitrary if you’re not actively keeping track. 

Cards that earn HSBC Rewards Points 

TheHSBC TravelOne Cardis HSBC’s flagship miles card. It’ll earn you up to 2.4 miles (6× Rewards Points) per S$1 on foreign currency spend, and up to 1.2 miles (3× Rewards Points) per S$1 on local spend.

HSBC logo
MoneySmart Exclusive
Earn up to 2.4 Miles | Instant Activation*
on Local Spend
S$1 = 1.2 miles
on Foreign Currency Spend
S$1 = 2.4 Miles
Travel Insurance coverage, Airport Lounge visits
Complimentary
MoneySmart Exclusive:

Get UPSIZED S$420 Cash or 6,140 SmartPoints (worth up to S$499 of Gifts) when you spend S$500 from Card Account Opening Date to end of the following calendar month!

 

PLUS, double your excitement with a chance to win the ultimate S$15,000 getaway to your dream destination in our exclusive lucky draw! T&Cs apply.

Valid until 30 Jun 2026


Many love the HSBC Revolution Credit Cardfor its earn categories. Earn 10X Rewards Points (equivalent to 4 miles or ~2.5% cashback) on online shopping, dining, and more. For other spending, you get 1X Reward Point.

HSBC logo
MoneySmart Exclusive
Earn up to 8 miles per S$1 | Instant Activation*
on Contactless & Online Spending for cardholders who maintain at least S$50,000 average daily balance in your HSBC EGA SGD Account
S$1 = 20X Points (8 miles)
on Contactless & Online Spending for all other cardholders
S$1 = 10X Points (4 miles)
on All Other Spend
S$1 = 1X Point
MoneySmart Exclusive:

Get UPSIZED S$420 Cash or 6,140 SmartPoints (worth up to S$499 of Gifts) when you spend S$500 from Card Account Opening Date to end of the following calendar month!

 

PLUS, double your excitement with a chance to win the ultimate S$15,000 getaway to your dream destination in our exclusive lucky draw! T&Cs apply.

Valid until 30 Jun 2026

Note that unlike some other Visa Infinite cards out there, points earned on the HSBC Visa Infinite Credit Cardare not exempt from expiry rules.

 

Maybank TREATS Points expiry

With Maybank cards, TREATS Points usually expire, unless you're holding a premium card enrolled in the Rewards Infinite programme. For most cardholders, point expiry kicks in fairly quickly compared to other banks—so it’s important to keep track.

TREATS Points expiry

By default, TREATS Points expire 1 year from the end of the calendar quarter in which they were earned. For example:

  • Points earned in Feb 2024 (Q1) will expire on 31 Mar 2025
  • Points earned in Aug 2024 (Q3) will expire on 30 Sep 2025

This rule applies to all cardholders who are not enrolled in the Rewards Infinite programme—including users of the Maybank Horizon Visa Signature and Manchester United Platinum Visa cards.

Maybank logo
on Air Tickets and Foreign Currency Spend
S$1 = 7X Points
on local Shopping, Groceries, Dining, Hotel Bookings
S$1 = 3X Points
Rewards to Miles Conversion for Selected Airline Partners
1 Point = 0.4 Miles
Maybank logo
when Man. United win a Premier League match
Earn 5X TREATS Points
when Man. United win a Premier League match
Up to 3% Cashback
on All Spends
1% Unlimited Cashback

You can check expiry dates via your monthly card statement or the Maybank TREATS SG app. Once expired, points cannot be extended or reinstated. For more details, see full TREATS Points Rewards Programme T&Cs.

 

Exception: no expiry for certain cardholders

If you're using a Maybank World Mastercard or hold the Maybank Visa Infiniteand are enrolled in the Rewards Infinite programme, your TREATS Points do not expire—as long as you maintain your Rewards Infinite membership.

This is a major advantage for frequent travellers or those saving up points for big-ticket redemptions.

Maybank logo
at selected retail, dining merchants and petrol stations
Up to 10X TREATS Points
Rewards to Miles Conversion for Selected Airline Partners
10 Points = 4 miles
for each conversion of points to frequent flyer miles
Conversion Fee Waived

 

OCBC points expiry 

OCBC offers 2 main types of rewards currencies: 90˚N Miles and OCBC$, depending on the card you use. And while one is refreshingly simple (no expiry!), the other comes with a fixed shelf life that’s easy to overlook if you’re not paying attention.

90˚N Miles expiry

If you hold the OCBC 90°N Card, you’re earning 90˚N Miles, which offer a no-stress, no-expiry approach. These miles never expire, which makes them a solid option for long-term planners or anyone who hates keeping track of reward timelines.

On top of that, they’re redeemable as either KrisFlyer miles (1:1) or 1% cashback, giving you flexibility depending on your travel or cash goals.

Earning rates:

  • 7 miles per S$1 on Agoda bookings
  • 2.1 miles per S$1 on foreign currency spend
  • 1.3 miles per S$1 on local spend

Just keep in mind that miles are awarded per S$5 block spent in a single transaction—so amounts below that threshold won’t earn anything.

OCBC logo
MoneySmart Exclusive
Earn Miles That Don't Expire
on Agoda accommodations worldwide
S$1 = Up to 7 Miles
on Foreign Currency Spend
S$1 = 2.1 Miles
on Local Spend
S$1 = 1.3 Miles
MoneySmart Exclusive:

Get $250 Cash or 3,900 SmartPoints (enough to redeem an Apple AirPods Pro 3 worth S$349) when you apply and spend a min. of S$400 within 30 days! T&Cs apply.

Valid until 30 Jun 2026

 

OCBC$ expiry

If you’re using the OCBC Rewards Credit Card, you’ll be earning OCBC$, which are on a tighter timeline. These points expire on the last day of the 24th calendar month from when they were earned. That gives you just about 2years to use them before they’re automatically forfeited.

For example:

  • OCBC$ earned in July 2024 will expire on 31 July 2026
  • OCBC$ earned in October 2024 will expire on 31 October 2026

Unused OCBC$ cannot be extended or transferred, and will also be forfeited if your card is closed before the expiry date.

Earning rates:

  • 15 OCBC$ per S$1 at selected partner retailers (refreshed every quarter)
  • 10X OCBC$ (4 miles) per S$1 on online and retail spend
  • 1X OCBC$ on all other purchases
OCBC logo
MoneySmart Exclusive
Earn up to 6 miles per S$1 spent
for every S$1 spent at Watsons and certain online shopping platforms
Earn 15 OCBC$ (equivalent to 6 air miles)
on All Other Spend
S$1 = 1 OCBC$
Rewards to Miles Conversion
10 OCBC$ = 4 Miles
MoneySmart Exclusive:

Get $250 Cash or 3,900 SmartPoints (enough to redeem an Apple AirPods Pro 3 worth S$349) when you apply and spend a min. of S$400 within 30 days! T&Cs apply.

Valid until 30 Jun 2026

 

Standard Chartered 360° Rewards Points

Standard Chartered rewards cardholders with 360° Rewards Points, but whether your points expire depends on which card you hold. If you’re using a premium or travel-focused card, you may be exempt from expiry rules. If not, your points come with a 3-year ticking clock.

 

360° Rewards Points expiry

If you're using the Standard Chartered Journey Credit Card or the Standard Chartered Visa Infinite Card, your 360° Rewards Points do not expire. That’s a nice benefit for those who like to accumulate points slowly or wait for the best redemption opportunities.

However, for all other Standard Chartered cards, including the Standard Chartered Rewards+ Card, 360° Rewards Points expire in fixed 3-year cycles:

  • You get an Initial Period of 3 years from the date your card account is opened
  • After that, a Further Period of another 3 years starts
  • Points awarded during each period will expire at the end of that specific period
  • Any points left unredeemed at the end of a period are automatically forfeited

There’s no grace period, and expired points cannot be reinstated—so it’s important to know where your card stands in the timeline.

Note that if you're converting points to KrisFlyer miles, there's a $27.25 transfer fee (inclusive of GST) per conversion. This fee is non-waivable, so factor that into your redemption plans.

Standard Chartered logo
MoneySmart Exclusive
Up to 30k Miles Offer
on Transportation, Food Delivery & Online Grocery merchants
S$1 = 3 Miles
for all Eligible Foreign Spends
S$1 = 2 Miles
for all Eligible Local Spends
S$1 = 1.2 Miles
MoneySmart Exclusive:

Get S$180 Cash via PayNow or 2,800 SmartPoints (worth up to S$429 of Gifts) when you spend min. S$800 in 60 days AND apply to any of the following SCB products through MoneySmart (Bonus$aver Account, CashOne Loan, EasyPay or Funds Transfer). T&Cs apply.

 

[Stackable Miles Promotion]
Get 30,000 miles when you spend a min. of S$800 within first 60 days of card approval and pay the first year annual fee. T&Cs apply.

Valid until 30 Jun 2026
Standard Chartered logo
Earn up to 10X Rewards Points
on Foreign Currency Spend
S$1= 10X Points
on Local Dining Spend
S$1= 5X Points
on All Other Spend
S$1= 1X Point

 

UOB UNI$ expiry

With UOB cards, rewards are typically issued as UNI$, which you can later convert into miles (at a rate of 1 UNI$ = 2 miles). But unlike some banks that let points linger, UNI$ come with a 2-year expiry window, and the rules around it require some attention.

All UNI$ earned across eligible UOB cards will expire 2 years from the last day of the quarter in which they were earned. Each expiry period is tied to the calendar year’s quarters. That means:

  • UNI$ earned in Mar 2024 (Q1) will expire on 31 Mar 2026
  • UNI$ earned in Oct 2024 (Q4) will expire on 31 Dec 2026

Expired UNI$ cannot be reinstated, and redemptions are calculated in S$5 transaction blocks, so tracking both your spending and your point age is essential if you want to maximise rewards before expiry. Read the full UOB rewards terms for more information.

Cards that earn UNI$

One card that earns UNI$ is none other than the highest-earning general spend miles card in Singapore, the UOB PRVI Miles Card. With this heavyweight, you can currently earn

  • Up to 8 miles per S$1 on Agoda and Expedia bookings via UOB PRVI Miles website
  • 3 miles per S$1 on overseas spend
  • 1.4 miles per S$1 on local spend
UOB logo
MoneySmart Exclusive
Earn up to 8 Miles per S$1
on agoda and Expedia bookings via UOB PRVI Miles website.
S$1 = Up to 8 miles
on Overseas Spend
S$1 = Up to 3 miles
on Local Spend
S$1 = 1.4 miles
MoneySmart Exclusive:

Get a SURE-WIN S$30 Cash for New-To-UOB customers who apply and make just one eligible transaction within 30 days from approvalT&Cs apply.

Valid until 30 Jun 2026

The popular UOB Lady’s Card(which both the men and ladies love!) also earns you UNI$. You earn 1X UNI$ per S$5 on all spend as a base rate, and up to 25X UNI$ (10 miles per S$1) in your Category of Choice. There’sno minimum spend required, and this card is great if you want to optimise earnings in selected spending categories

UOB logo
MoneySmart Exclusive
Up to 10 Miles per S$1 spent
Base Earn Rate
S$5 = 1X UNI$ (0.4 miles per S$1)
Category of Choice
S$5 = Up to 25X UNI$ (equivalent to 10 miles per S$1)
Min. Spend
S$0
MoneySmart Exclusive:

Get a SURE-WIN S$30 Cash for New-To-UOB customers who apply and make just one eligible transaction within 30 days from approvalT&Cs apply.

Valid until 30 Jun 2026


The UOB Preferred Platinum Visa Card is another card that earns you rewards in UNI$.

  • 10X UNI$ per S$5 on online shopping, entertainment, and contactless payments
  • 1X UNI$ per S$5 on all other spend
UOB logo
on Online Shopping, Entertainment & Contactless Payments
S$5 = 10X UNI$
on SimplyGo Transactions
S$5 = 10X UNI$
Rewards to Miles Conversion
1 UNI$ = 2 Miles

 

Special case: KrisFlyer UOB Credit Card earns miles directly

One UOB card breaks away from the UNI$ system altogether—the KrisFlyer UOB Credit Card. With this card, you earn KrisFlyer miles directly, which are credited straight to your KrisFlyer account. That means:

  • No need to track UNI$ conversions or expiry
  • But your miles will be subject to KrisFlyer’s standard 3-year expiry policy, just like with any miles credited to your KrisFlyer account
UOB logo
Earn up to 3 Miles per S$1 spend
on Singapore Airlines, Scoot, KrisShop, Kris+ and Pelago purchases
S$1 = 3 Miles
on dining, food delivery, online shopping, online travel and transport spend
S$1 = Up to 2.4 Miles
on all other spend
S$1 = 1.2 Miles

 

This article was first drafted with the help of AI and later reviewed and refined by the author.