@jmvanbreda: Here's my attempt.