Welcome (sticky)

If this is your first time here, welcome.
The bulk of the effort so far has been in the Best Layouts section (and the research required to get the best layouts...). Also spent a lot of time doing keyboard tests...

Quick links

  1. Another problem affecting KLA scoring
  2. ANSISO linear
  3. Extra typing practice
  4. Compact trackball keyboard
  5. Best keyboard layouts for English and programming
  6. ZXCV-Fingers
  7. Character compatibility checker
  8. Announcing KLAnext
  9. All versions of KLA are measuring wrong
  10. Ergo layouts proven better
  11. Mirror of KLATest keyboard analyzer
  12. Glyph Coverage for popular academic fonts updated to 59 fonts
  13. Glyph Coverage for popular academic fonts
  14. Glyph Coverage comparison now includes Google Fonts lists

Another problem affecting KLA scoring

21 July 2021

Further to the issues discussed in All versions of KLA are measuring wrong, there is another problem affecting how the various versions of KLA score the results. The effect is more subtle, and is best explained by means of examples. I'll use results from KLANext to illustrate.

Here are typical results from a test, pasted into a spreadsheet.


The Score is the sum of the four components. These components have been weighted according to importance. This weighting varies between the different versions of KLA, in KLANext they are:

However, let's take a step back, and look at what those numbers were before being presented like that.


As you can see, these numbers are in wildly differing ranges. In order to get the numbers presented to the user, each number is muliplied by a scaling factor, as well as the percentage weighting. Selecting the scaling factor is a bit of a thumb-suck, Den described it as "difficult". Despite that, the final numbers still come up in different ranges, with the Same Hand metric looking particularly weak.

Patrick's original version, and SteveP's fork, take a slightly different approach to dealing with this issue, but it is still a case of trying to equalise different number ranges.

Because of the difference in ranges, a 10% improvement in Same Finger will not affect the score as much as a 10% improvement in distance, despite both metrics having identical weightings. So the net result is biased towards lower distance layouts.

Proposed solution

One way to sidestep this problem is to compare each metric to a known standard, and the obvious candidate for that is ANSI QWERTY, at least for English. I suppose we could take a similar approach for other languages.

The calculaton is quite straight-forward. Divide 100 by QWERTY's score for each metric, and multiply that by each layout's score for that metric.

For example, QWERTY's distance score is 2284.6753. So 100 / 2284.6753 is 0.04377, multiply that by each layout's distance score, for example Dvorak at 1720.2597, gives us 75.30. We do this for each layout for each metric (aren't spreadsheets and computer programs great?).
Then we mutiply each score by the desired weighting and add them, to get the final score. That gives us these results, after sorting according to the new scores.


Since QWERTY is set at 100 for each metric, it is easy to see where each layout is better or worse than QWERTY. I have dubbed this scoring method as "QWERTY-based", or QB for short.

The rankings are affected, some layouts moved up or down one or two spots.

Implementing this in KLA will be a bit challenging but not impossible. It will require a hidden QWERTY layout included in all comparisons, and there will be issues when comparing against layouts and input texts that include characters not on US ANSI QWERTY.

ANSISO Linear

Back in 2017, I stumbled across (or made, see below) this layout, which is an attempt to make an ortholinear form factor (tenkeyless version shown) to replace the horrific ANSI form factor.

Naturally I made a few changes... my modded version gives credit to one "JM Joy," but Google won't show me the original site and I can't find anything locally. I went for a thumb-shift style, and put the dash/underscore in a better spot for English ... I guess the original was trying to balance the plus/equals on the right. Also we swap the quotes with the colons.

The design adds an extra key to the main area, matching the ISO form factor, with the benefit of ortholinear. To appeal to a more "don't change my keyboard" demographic, and aimed squarely at the American market, we could revert to a more familiar spot for the shift keys, and add in Spanish-friendly ¡, ¿, Ñ, and ñ. I don't know why the original version had Greek lambda symbols.

The original design has space for another six keys, but I'm not sure what to do with them beyond a "Compose" key which will probably be useless to most Windows users. Perhaps they could be used in Europe for their diacritics, ß,ẞ, etc.
A UK version could look like this:

I'm publishing these here in the hope that some Asian manufacturer (or better yet, ANSI/ISO) will see them and think, "Hey, we could sell those..."

If we are lucky they may go for something better like Uciea ... :-). This is a slightly tweaked version with a better spot for the backtick, for users of certain editors.

If you need ZXCV, then try ZXCV-Fingers instead:

Compact trackball keyboard

27 May 2021

Here's a different take on the usual "percentage" compact keyboards. Made by ActiveKey in Germany, the target market is commercial environments like hotels or banks.

The key layout is compact, and a curious combinateion of ANSI and ISO ideas, along with a reduced navigation cluster, and a numpad on the Function layer. They also use the AltGr layer.

The other main feature is the integrated trackball... presumably because loose mice wander off in the target market.

Read more at ActiveKey.

Best keyboard layouts for English and programming

25 May 2021

It took a while but it's finally done ... a long-overdue update to the Best Keyboard layouts section.

The current methodology is better than before, and previous tests suffered from faulty scoring, so they have all been removed.

Take a look at the winners.

As part of the process, the Internet Letter Layout Database was also updated.

ZXCV-Fingers

19 May 2021

For the last several weeks / months(!) I have been busy with a long-overdue round of keyboard tests.

Part of the process, of course, is coming up with new layouts to amaze and amuse. This process started last year with the Nirvana range, which has since been superceded by the various Uciea / Uhiea / Chia layouts.

Totally unrelated to these, I had another go at making a more "conventional" layout, along the lines of Norman, Workman, Capewell, and Colmak. My previous attempt at this a few years ago led to the S2 layout.

This time around, I kept ZXCV unchanged, as well as most of the punctuation on the right hand side of QWERTY, except for the semicolon, which clearly had to move.

The result is the ZXCV line, which has two versions ... ZXCV-Fingers, which does better on KLAnext, and ZXCV-Words, which does better at the word metrics, and is better overall. The only difference between them is a three-way rotation between A-O-U, first swapping U and O, and then A and O. Both home rows are unique, as far as I know.

The design does bear some resemblance to a partial mirror of Colemak, but it was developed from scratch, not as a Colemak mod. I now also understand why Shai had to compromise and put the high-frequency A and O both on pinkies ... it's the ZXCV that ultimately forces you to those choices.

I think Uciea is too good to beat with ZXCV and punctuation restrictions. So ZXCV comes third.

Character compatibility checker

18 May 2021

I have added a rather nifty tool to KLAnext, on the Configure page.

It's a function that allows you to check how compatible groups of characters are with each other.

Announcing KLAnext

15 May 2021

Since Den / Shenafu / ieants.cc has disappeared, I have continued updating his forked version of Patrick's Keyboard Layout Analyzer.

I've put the new version, known as KLAnext, up at https://klanext.keyboard-design.com. It's also linked from the Tools page.

Apart from various cosmetic, corpus and keyboard changes, and bug fixes, I have also adjusted the scoring parameters slightly. See the change log for details.

Please report any problems, and see the introduction for a nasty bug.

All versions of KLA are measuring wrong

4 May 2021

Since Den / Shenafu has disappered, I've taken over what he did to extend Patrick Gillespie's popular Keyboard Layout Analyzer.

I started making cosmetic changes, then tried to improve the scoring by adding Fitt's Law and punishing long movements. That led to finding and fixing one bug, caused by JavaScript itself. Then Arno Klein raised a question about discrepancies in the distances reported by Patrick's version vs that reported by Den's.

One cause of these issues turned out to be how Den measures vertical distance. I then took a closer look at all versions, and discovered they are all getting their sums wrong ... I'm busy fixing the version I'm working on. The logic is a little messy, especially regarding the modifier keys, and when there is one shift only, and/or it's on a home key.

Anyway, pictures talk louder, so let's start with Patrick's version. The input text is just this: asdf, the left hand home keys on QWERTY.
As you can see, QWERTY has a total distance of zero. Distance is a major component of how the score is calculated.

We can compare the same input on SteveP's version:
Steve does not show cm, only percentage, but you can see that all fingers on QWERTY have zero, adding up to 100 ...

These results give an advantage to whichever layout has the most characters from the input text, on its home keys.

For Den's layouts, using the same input, we get (for example, on Den 1, but others are the same):
Here we see the four fingers on QWERTY recording 0.8cm each (down and up, on typical Cherry-style switch), for a correct total of 3.2cm. The problem comes when we use a modifier, like Shift. Here is the result when the input is simply capital A.
Here, the left pinky is correct with 0.8cm. The right pinky should be 4.95 + 0.8 + 4.95 = 10.7 (distance from ";" to RShift, press RShift, move back), but instead it is 11.9 ... The extra 1.2cm is 0.4 "modifier penalty", plus a spurious 0.8 key press that should not be there.

If we look at an Ergodox layout with a single thumbshift, for example Colemak Thumbshift, then different problems show up. There are the same distance issues, but also problems with counting finger and hand use. We use the input string AN (home finger on each hand, with a single shift on left thumb). On Patrick, we get finger usage: Which shows two keypresses on the shift key, instead of one. Similarly with hand use:

SteveP gets this aspect correct (while distance is still wrong): and

Den's version also gets it wrong. and

So until the various authors fix the sums, treat KLA's results with caution. As mentioned, I'm working on fixing KLAnext to get these things right.

Ergo layouts proven better

8 April 2021

For the last few weeks, I have been busy with another round of testing keyboard layouts. It's been a lot of work. It was inspired in part by Arno Klein's new Engram research and layout. That led me to finally doing a write-up of the process I followed last year to create a new English and programming text corpus, suitable for keyboard layout evaluation.

That it turn led to solving the problem of "ideal input text" for the likes of the Keyboard Layout Analyzer. The problem with most input texts is that they don't mirror English letter frequency. So if your layout does best on Alice Chapter 1, it just means it's best for that text, and not English in general.

I solved the problem by extracting all the bigram pairs (English and code) for all characters, tab and enter, on a normal US ANSI keyboard. So that's 97 × 97 pairs. I then used that data to generate both English and code texts, with the correct character and bigram frequency, by chaining these bigrams together to make texts that look "kinda random" to humans but look English or code to the analyzers.

You can download the paper Keyboard Layout Analysis: Creating the Corpus, Bigram Chains, and Shakespeare's Monkeys and associated datasets with useful info for keyboard layouts. Get the 1.0.1 and -101 versions, they're more complete.

Like last time, my layout comparisons consider both finger-based metrics as determined by KLA, and word-based metrics as determined by a set of programs I wrote. I plotted the results on a graph, with word-based scores vs finger-based scores. That gives us this result, where the gray dots are ANSI layouts, the red are Ergodox, and the blue are matrix form factor.

ANSI vs Ergodox vs Matrix

From this we see that ANSI layouts hit a ceiling. At the moment, the best word-based scores are on Ergodox, while the best finger-based scores are on matrix format.

For comparison, here's how a few layouts look, ANSI format only.

ANSI vs Ergodox vs Matrix

Those are ANSI layouts, but the scale is for all layouts. The Nirvana and HIEAMTSRN layouts are pushing the edges of "max" for ANSI layouts. Similarly, QWERTY is not the absolute worst.

Mirror of KLATest keyboard analyzer

20 March 2021

Have added a mirror of Den's / Shenafu / ieants.cc KLATest version of his fork of Patrick's Keyboard Lyout Analyzer.

It's also linked from the Tools page.

I don't know what happened ... he just disappeared, and then his hosting expired.

Glyph Coverage for popular academic fonts updated to 59 fonts

24 February 2021

A major update to the Glyph coverage comparison table for popular academic fonts.

There are now 59 fonts which should be suitable for academic writing, both free and commercial. You can now select which fonts to compare for glyph coverage.

Glyph Coverage for popular academic fonts

21 February 2021

Added a Glyph coverage comparison table for popular academic fonts, Cardo, Junicode, LeedsUni, Libertinus Math, Libertinus Sans, PalemonasMUFI, Quivira, STIX Math, Symbola, and TITUS Cyberbit Basic.

Glyph Coverage comparison now includes Google Fonts lists

7 February 2021

Updated the Glyph coverage comparison table to include Google's glyph lists for Latin Core, Plus, Pro and Expert unique glyphs.

Reviews of the Seelpy layout

17 October 2020

Two people have tested my Seelpy 1.4 layout and posted reviews online.

The name Seelpy comes from the initials C-L-P, from Caps-Lower-Punctuation, describing how the characters are distributed on the keys. The layout was designed to get the high score on the then-current version of KLA.

richa
Henri (includes video of typing)

Thanks for your interest and reviews :-)

The Nirvana keyboard

13 October 2020

My so-called Nirvana keyboard is progressing well. Here's the concept design as done on keyboard-layout-editor.com.

Click image for larger view. The Nirvana keyboard design.

It's basically modelled on my current keyboard, a MS Natural (original version), with what I hope are viable improvements. Regarding the current letter layout, it scores very well in English and with a mixed code corpus on KLATest. As always, it might change tomorrow :-)

I learned from my first dev model, and I'm not going to have keys printed yet. I'm also keeping the keys as simple as possible in case they need to be re-arranged.

Here's what the test assembly looks like:

Click image for larger view. The Nirvana keyboard test assembly.

The previous build had an aluminium base and switch plate, with the other three layers acrylic. However, I had to have the different materials cut at different places with different lasers, and the end result was not good ... things did not align properly. So I thought to avoid that and have everything cut at one place. It was going to be all-acrylic, but I decided to try laminated MDF instead. So the top and bottoms are 3mm Sapele (aka African mahogany) veneer, and the other two are a cheaper 6mm veneer.

The real problem was what to use for the switch plate. I bought 1.5mm extruded acrylic because the thickness is supposed to be more exact, and it is touted as 'rigid'. They forgot to mention 'brittle', at least in that thickness. The switch cutouts simply snap when you apply pressure. Also, it's fractionally too thick and the switches don't click in.

The laser company suggested 1mm UHI acrylic which is better in some regards ... it doesn't snap, and the switches click in nicely. However, it's a bit too flexible ...

So of course I hit the interwebs to educate myself about plastics. The best option at the moment that I can find is POM (Polyoxymethylene)... which comes in two variants. The easist one to get here was the copolymer version, so we're busy testing that now. The homopolymer version is supposed to be a little stiffer.

In truth, even the 1.5mm aluminium plate had a bit of bounce in it, and I had to put some internal supports under it to reduce the bounce. I'll need to do the same with the plastics.

In case anyone local wants to do something similar, here's the sites:

The VHD split ergo keyboards

17 August 2020

The VHD keyboards from VEXC How Design are a pair of split, bowled ergonomic keyboards, available in two sizes. The model shown below has 48 keys, while the bigger version has 68 keys.

Click image for larger view. The 68 key VHD keyboard.

The keyboard offers a choice of red or silver Cherry switches, and is fully programmable thanks to running QMK firmware.

There are add-on stands for adding trackpads or other controls.

Read more at the VHD site.

Sensible tweak to Nirvana

18 August 2020

Slightly updated version of the SHZ / Nirvana sayout. I realised that the K was in a silly place and moved it to a better spot.

Now have to teach myself to touch-type since this layout has such low same-finger keys that it makes sense.

Click image for larger view.

The SHZ / Nirvana keyboard layout, ANSI version.

The Zergotech split keyboard

17 August 2020

Zergotech down in Australia have a split keyboard with some interesting design ideas

Click image for larger view. The Zergotech keyboard.

The keyboard comes with three different types of wrist pads, two of which are smaller than the ones in the image above, and can slide around in the pad recess as you move your hands. You could also use one of these pads for mousing.

The two halves offer various options for tenting, incline or decline to suit your physique and preferred typing position.

As is to be expected from an upmarket mechanical keyboard, the keyboard is programmable, and comes with a choice of white or brown Kailh box switches.

Read more at the Zergotech site.

A new rather remarkable English keyboard layout

11 August 2020

I'm still busy trying to get my first keyboard finished. At the moment I'm having some issues with the QMK firmware, because my designs are a little different to the usual mindset.

At the same time, there are things about the planned X6.5h layout that bother me, particulary putting hH on the space key ... so I figured I should relook at the problem and see if I could do better.

One thing led to another, and some hours of playing with the Keyboard Layout Analyzer eventually led to the SHZ layout. That's the current name, it might end up being called WISH or even Nirvana.

The actual design I will probably end up building will be an angled ortholinear matrix design, which in KLA is represented by a regular slab matrix, since the angles of the hand are not relevant to the scoring model. It did well in testing, so I thought to put the letter layout onto a standard ANSI configuration, and test that against assorted other "standard" famous and well-performing layouts, in a battle of peers.

So I was pleasantly surprised when it did extremely well, finishing first for most tests of English prose, and second for two.

The ANSI version of the layout looks like this. This is the so-called 30/31 keys version, where keys are just re-arranged, and normal/shift pairs not changed. The matrix version does change normal/shift pairs, and puts some punctuation on the AltGr layer as well. In truth, some of the layouts I tested against do change the normal/shift pairing, but it didn't help them.

The SHZ keyboard layout, ANSI version.

Here's the layouts I tested against (using Den's KLATest version), and the results from the Typing Championship 1 test:
Typing Championship 1 results

The Ginny

7 August 2020

The Ginny is a minimal chording keyboard, pushing the limit of how many keys you actually need. Piano players should feel right at home.

Click image for larger view. The Ginny keyboard.

It uses the ASETNIOP keyboard layout paradigm, which you can even do on a normal keyboard.

It's available as a kit, partially built, or ready to use, with their custom version of Kailh Choc switches.

Read more at the g Heavy Industries site.

Keyboardio Atreus

6 August 2020

Keyboardio, pumped by the success of their Model 01, have joined forces with Phil Hagelberg, the designer of the original Atreus, to produce a full-blown mass production version of the Atreus.

Click image for larger view. The Keyboardio Atreus keyboard and palmwrest.

This mini keyboard is extremely portable. You can choose from four different hot-swappable Kailh switches, rated for 70 million keystrokes, and add on the optional wooden palmrest and carrying bag as well.

The keycaps are laser-engraved PBT for long life. Naturally the keyboard is fully programmable, via their bespoke Kaleidescope firmware configuration tool.

Read more at the Keyboardio site.

The B2418

5 August 2020

The Bloody B2418 is from A4Tech's Bloody Gaming brand.

Click image for larger view. The Bloody B2418 keyboard

It's a traditional slab design, with several distinguishing features. The first is that it uses their LK optical switch on the Q/W/E/R/A/S/D/F keys, getting rid of the debounce problem and supplying a 0.2ms response time. They've combined the optical tech into a switch which still gives a tactile bump, so you can feel that you've made contact. The switches are rated for 100 million keypresses, and only have to travel 1.5mm to activate, compared to the typical 2.2mm on mechanical switches.

The board electronics are spill-proof, having an electonic seal and drain holes, so any split coffee won't kill the board. The usual gaming bells and whistles like variable backlighting, anti-skid and wrist pad are also included.

Read more at the Bloody site.

The Moonlander

4 August 2020

The Moonlander, from the makers of the ErgoDox, is an updated variant on the same design concept.

Click image for larger view. The Moonlander keyboard

It's a highly customisable split design, and you can even use the left half stand-alone for gaming.

The board is offered in black and white versions, and you can select from no less than ten different Cherry or Kailh switches. The switches are hot-swappable as well, making them easy to replace. The keycaps themselves are double-shot PBT for long life.

The firmware is the popular open source QMK, so you can tinker and remap to your heart's content, made easier by the Oryx configuration suite. It works with Windows, Mac or Linux with no additional drivers necessary.

The keyboard even folds up to fit into the nifty carrying bag for easy transport. The price includes courier transport to anywhere in the world.

Read more at the Moonlander site, or see more pictures and buy.

Tex Shinobi

3 August 2020

The Tex Shinobi is a laptop-style keyboard for the desktop. Given that so many people now switch between laptops and desktops, it does make logical sense in that regard.

Click image for larger view. Tex Shinobi keyboard

There are a host of options to choose from, starting with the switches. You can select from eight different Cherry switch options.

The board comes in six different key layouts, ranging from the ubiquitous US-ANSI via four northern European options, to Japanese.

Keycaps are ABS with laser engraving, and the keyboard features a built-in trackpoint with three mouse switches. It also features N-key rollover and is programmable.

Read more at the Tex site.

Vortex Core

1 August 2020

The Vortex Core is a compact keyboard for minimal desk space and hand movement.

Click image for larger view. Vortex Core keyboard

You can choose which Cherry MX switches you want, from red, brown, blue or clear.

The board is programmable, for all keys, and the LED backlighting. There are four layers for programming.

Keycaps are PBT DSA profile, with dye-sublimated printing for long life and no yellowing.

Read more at the Vortex Core site.

ROCCAT Vulcan 120 AIMO

31 July 2020

The ROCCAT Vulcan 120 AIMO scooped the T3 Best Gaming Keyboard of 2020 award.

Click image for larger view. ROCCAT Vulcan 120 AIMO keyboard

Roccat fit their in-house Titan switches to these boards. The switches are similar to the well-known Cherry brown or red models, but have faster activation point, and less wobble, which is designed to give the player a milli-second advantage over players using standard keyboards. ROCCAT Titan switch

On top of that, Roccat fit reduced-weight keycaps, which allows the backlighting to show through nicely. The board also comes with a removable palm rest and 512kb integrated macro & settings memory, to support all the keys being remappable.

Read more at the Roccat site.

Vortex New 75 (Race 3)

30 July 2020

The Vortex New 75 is a compact ten-key-less keyboard with a vibrant keycap colour scheme.

Click image for larger view. Vortex New 75 (Race 3) keyboard

The missing keys are assigned as Functions on other keys. The model is available with a choice of popular Cherry switches, topped by PBT DSA profile keycaps with dye-sublimated legend printing.

There are four possible layers that you can program, so you can make it behave exactly how you want it to.

Read more at the Vortex Gear site.

Ultimate Hacking Keyboard

29 July 2020

The Ultimate Hacking Keyboard is a split mechanical keyboard that has add-on modules to enhance the functionality.

Click image for larger view. Ultimate Hacking Keyboard

For the left hand side, there is a key cluster with mini-trackball. For the right hand side, you can choose from trackball, trackpoint or touchpad modules.

There are six switch options to choose from, of which five are Kailh and the other, Cherry clear. You can also select case colour and even OS-type branding.

The source code for the software is available on Github, so you can tweak it to your heart's content.

Read more at the Ultimate Hacking Keyboard site.

Coolermaster MECH gaming keyboard

28 July 2020

Coolermaster has a gaming keyboard with a designed-in removable carrying handle.

Click image for larger view. Coolermaster MECH gaming keyboard

You can choose from four of the most popular Cherry MX switches. The board accommodates up to 75 macros and 5 profiles, with USB3.0 ports and audio / microphone ports as standard.

High-speed performance is courtesy of the 64 key roll over, which should be more than enough for anyone playing with all their fingers and toes.

Read more at the Coolermaster site.

K83 Wireless Entertainment Keyboard

28 July 2020

Corsair has a nifty wireless keyboard designed for operating your media and TV surfing from the comfort of your couch.

Click image for larger view. Corsair K83X Wireless Entertainment keyboard

With an aluminium design, it features both a built-in joystick and a touchpad as well as a media control roller.
It even encrypts the traffic between the keyboard and receiver, to prevent eavesdropping.

Read more at the Corsair site.

Another "Gorton Modified" possibility

8 June 2019

Have added Ricardo font sample, keyboard mockup and analysis to the "Design" page of my build guide.

Glyph coverage table updated

9 August 2018

Have added the Adobe Latin 1 - 5, as well as Adobe's recommended glyphs for new fonts (AGLFN), as well as the W2G (World Glyph List 2) glyphs, to the Glyph Covereage Comparison page which shows the different glyphs provided by fonts which meet different "collection" standards, namely AL1, AL2, AL3, AL4, AL5, WGL4, W1G, W2G, AGLFN and SIL.

Glyph coverage table

20 July 2018

Wow it's been a long time. I smashed my left wrist back in middle January, that led to some forced changes in what gets done, but getting back up to speed again.

Have added a table Glyph Covereage Comparison which shows the different glyphs provided by fonts which meet different "collection" standards, namely WGL4, W1G and SIL.

Most efficient computer keyboard layouts for English and programming

8 January 2018

Added page showing layouts ranked by efficiency.

This score is also buried in the finger-based metric and included in the averages, but put it on a separate page for viewing convenience.

See the Best Layouts by Efficiency page.

Same finger bigrams

3 January 2018

Added analysis of how the different layouts compare when measuring the likelyhood that they will need to type two given letters one after the other, using the same finger, on different keys.

This is all 26 lower case letters plus space, in each possible combination with each other. I've also added the analysis to each layout's page, as well as to the Averages pages.

See the same finger bigrams page.

Extra typing practice

2 January 2018

The year has already started flying by.... added some extra typing lessons to the pages in the Letter Layout DB. These are words from the Word Warriors list, being words which are currently underused and could do with some love and attention.

Archive 2017

29 July 2018

Archive 2017