Real Vim ninjas count every keystroke - do you?

Pick a challenge, fire up Vim, and show us what you got.

Leaderboard, Changelog, Rules & FAQ, updates: @vimgolf, RSS.

Your VimGolf key: please sign in

$ gem install vimgolf
$ vimgolf setup
$ vimgolf put 4d2c9d06eda6262e4e00007a

Assignment Alignment

line up the operators. Use spaces, not tabs.

Start file
# Align these assignments

x = 1
y = true
z = 'you'
foo = 'bar'
long_name = "long variable value"
$p3cial = ch4rs
last = line

# Much better!
End file
# Align these assignments

x         = 1
y         = true
z         = 'you'
foo       = 'bar'
long_name = "long variable value"
$p3cial   = ch4rs
last      = line

# Much better!

View Diff

3,6c3,6
< x = 1
< y = true
< z = 'you'
< foo = 'bar'
---
> x         = 1
> y         = true
> z         = 'you'
> foo       = 'bar'
8,9c8,9
< $p3cial = ch4rs
< last = line
---
> $p3cial   = ch4rs
> last      = line

Solutions

The best way to learn is to practice. Below, you will find some of the solutions other golfers have entered. To unlock higher ranked solutions, submit your own entry which does as well or better than the solutions you can currently see - climb the ladder!

Check out these helpful resources to improve your Vim skills... Game on.

Unlock 133 remaining solutions by signing in and submitting your own entry
#134 arminas / @arminas - Score: 31 - 06/22/11 @ 02:09
:%s/=/        &/<CR>5Gwjdwj.j.j.ZZ

0 comments

#135 Jakub Arnold / @darthdeus - Score: 31 - 12/19/11 @ 08:27
:%s/=/        &/<CR>5Gwjdwj.j.j.ZZ

0 comments

#136 Burkhard Zimmermann / @BurkZimm - Score: 31 - 12/31/11 @ 11:22
:%s/=/        &/<CR>5Gwjdwj.j.j.ZZ

0 comments

#137 Ben Wagaman / @jamin4jc - Score: 31 - 01/12/12 @ 21:49
:%s/=/        &/<CR>5Gwjdwj.j.j.ZZ

0 comments

#138 Nathan Manousos / @trafnar - Score: 31 - 04/05/12 @ 23:27
:se ts=10 et<CR>:%s/ =/<C-V><Tab>=<CR>:ret<CR>ZZ

0 comments

#139 Jim Kalafut / @jimkalafut - Score: 31 - 09/23/13 @ 21:09
:%s/=/        &/<CR>5Gwjdwj.j.j.ZZ

0 comments

#140 Oliver Christ / @0liverChrist - Score: 31 - 11/11/13 @ 14:27
:set et ts=10|%s/ =/\t=<CR>:ret<CR>ZZ

0 comments

#141 CHIP CASTLE / @chipcastle - Score: 31 - 12/28/13 @ 09:40
:%s/=/        &/<CR>5Gwqqjdwq3@qZZ

0 comments

#142 Felipe Jaramillo F / @mrfelipe - Score: 31 - 04/17/14 @ 06:00
:se et ts=10|%s/ =/\t=<CR><CR>:ret<CR>ZZ

0 comments

#143 Kevin Hamer / @khamer - Score: 32 - 01/19/11 @ 14:23
2jV6j:s/ /\t<CR>:se et ts=10|ret<CR>ZZ

0 comments

#144 Alex David / @alexd_me - Score: 33 - 05/03/12 @ 20:17
jjlylqq8pj0q2@qw6puP5Pjj2PjF=5PZZ

0 comments

#145 pablo flouret / @quuxbaz - Score: 34 - 01/13/11 @ 15:23
2jw<C-V>jj8I <Esc>3jw6i <Esc>2jh2i <Esc>jbb5i <Esc>:x<CR>

0 comments

#146 NuM / @NuM314 - Score: 34 - 10/05/13 @ 17:12
jja <Esc>7.j2F 8.j;;.j;;6.jj;2.j;;5.ZZ

0 comments

#147 szetobo / @szetobo - Score: 35 - 01/11/11 @ 22:12
:se ts=10 et<CR>:%/s<BS><BS>s/ =/<C-V><Tab>=<CR>:ret<CR>ZZ

0 comments

#148 snaky / @snaky - Score: 35 - 01/19/11 @ 04:40
jV}:s/ /\t<CR>:se et ts=10|e<BS>ret<CR>:<Esc><BS>ZZ

0 comments

#149 Dan Dorman / @dandorman - Score: 36 - 01/18/11 @ 10:24
3Gqwyt=W@=10-len(@")<CR>i <Esc>j^q3@wj2@wZZ

0 comments

#150 Miha Filej / @mfilej - Score: 36 - 11/26/11 @ 08:40
3Gqwyt=W@=10-len(@")<CR>i <Esc>j^q3@wj2@wZZ

0 comments

#151 Jyun-Fan Tsai / @fakecolor - Score: 36 - 02/10/12 @ 19:49
3G8a <Esc>j0.j0.jbbb6i <Esc>jjbi  <Esc>jbb5i <Esc>ZZ

0 comments

#152 Dmitry Teslenko / @krab_mozga - Score: 38 - 01/19/11 @ 05:48
jjV}k:s/ =/         &<CR><C-V>kkel4kxgvV<.PZZ

0 comments

#153 Przemysław Pawełczyk / @przemoc86 - Score: 39 - 01/15/11 @ 11:32
jjV}k:s/ =/          &<CR><C-V>kkel4kxgvV<.PZZ

@przemoc86: It shows how I deal with such problems. Longest word can be pretty long, so counting is not an option, but you can easily spot it, right? That's why visual editors are sometimes useful or even better than scripts. In complex case awk is still a better choice, but it would be a bit longer though.

@dandorman: I really dig it. I keep forgetting about Vim's column select mode, probably because I can't think of any practical uses for it. That's really pretty slick.

2 comments

#154 Eric Andres / @eric_m_andres - Score: 41 - 12/05/12 @ 09:42
/=<CR>qqi<C-R>=repeat(' ',11-col('.'))<CR><Esc>nnq8@qZZ

0 comments

#155 Stefan Schmidt / @stafue - Score: 43 - 12/06/13 @ 08:16
:%s/=/        &/<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Right><CR>5Gwjdwj.j.j.ZZ

0 comments

#156 Ivo Dancet / @caifara - Score: 44 - 12/03/11 @ 14:04
:set ex<Tab><CR>/=<CR><C-V>jjI<Tab>  <Esc>3nni<Tab>  <Esc>2jhi  <Esc>nni<Tab>  <Esc>ZZ

0 comments

#157 ksauzz / @ksauzz - Score: 46 - 04/24/11 @ 00:59
:set ex<Tab><CR>jjll<C-V>jj>jjjll<C-V>>xx<Esc>2jwi  <Esc>jbbi<Tab>  <Esc>:wq<CR>

0 comments

#158 niquola / @niquola - Score: 47 - 01/28/11 @ 15:56
:3<CR>a        <Esc>+.+.+Ea      <Esc>2+Ea  <Esc>+Ea     <Esc>:wq<CR>

0 comments

#159 Matt Donahoe / @mdonahoe - Score: 47 - 11/26/11 @ 13:41
/=<CR>i        <Esc>nn.nn.nni      <Esc>nnni  <Esc>nni     <Esc>ZZ

0 comments

#160 Philipp Bayer / @PhilippBayer - Score: 51 - 01/30/11 @ 15:58
:%s/=/      =/<CR>11|dt=k.k.k.k.k<Down><Left><Left>i  <Up><Left><Left>  <Up><Left><Left>  <Esc>:wq<CR>

0 comments

#161 fdsfasdf / @fdsfasdf1 - Score: 52 - 12/14/11 @ 12:03
/<Esc><Esc>/=<CR>8i <Esc>nn8i <Esc>nn8i <Esc>nn8i <Esc>hxxnn2i <Esc>nn4i <Esc>i <Esc>:w<CR>:q<CR>

0 comments

#162 Tomasz Zurkowski / @doriath88 - Score: 57 - 04/18/11 @ 03:45
:%s/=/     =/g<CR><Right><Right><Right><Right><Right><Right><Right><Right><Right><Up><Right>xxx<Up>xxxxx<Left><Up>i <Left><Up><Left><Left><Esc><Right><C-V><Up><Up><Up><Down>I   <Esc>ZZ

0 comments

#163 Dean / @thecamelwalk - Score: 57 - 10/17/11 @ 23:16
/=<CR>2n2n<Esc>kkkkkkjni        <Esc>2n.2n.2n.i<BS><BS><Esc>3ni  <Esc>2ni     <Esc>:x<CR>

0 comments

#164 Takuya Nishigori / @nishigo_ri - Score: 58 - 04/24/11 @ 00:50
jjll<C-V>jjI        <Esc>jjjli      <Esc>jji  <Esc>jbbi     <Esc>:qa<CR>::w<CR>::qa<CR>

0 comments

#165 軽給 / @kei_q - Score: 61 - 04/24/11 @ 00:55
:set ex<Tab><CR>2j:se<Tab> ts=9<CR>a<Tab><Esc>j0a<Tab><Esc>j0a<Tab><Esc>j0<Tab><Esc>wa<Esc>i<Tab> <Esc>jjhi<Tab> <Esc>jF=i<Tab> <Esc>ZZ

0 comments

#166 Stephen Paul Weber / @singpolyma - Score: 65 - 01/12/11 @ 13:27
<Down><Down><Down><Right><Up><Right>i        <Esc><Down><Left><Left><Left><Left><Left>.<Down><Left><Left><Left><Left><Left><Left>.<Down><Left><Left><Left><Left><Left>.x<Left>x<Down><Down><Left><Left>i  <Esc><Down><Left><Left><Left><Left>i     <Esc>:wq<CR>

0 comments

#167 personlink / @personlink - Score: 363 - 04/07/11 @ 01:56
Vjjjjjjjjjjjjjjjjyppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp<Esc>dddxxxxxxxxxxxxxxixxxxxx<Esc>GGVggdi# Align these assignments<CR><CR>x         = 1<CR>y         = true<CR>z         = 'you'<CR>foo       = 'bar'<CR>long_name = "long variable value"<CR>$p3cial   = ch4rs<CR>last      = line<CR><CR># Much better!<Esc>:wq<CR>

0 comments

Created by: @khamer

167 active golfers, 547 entries

Leaderboard (lowest score wins):
18
#1 - Wei Dai / @clvv42

01/11/2011 at 01:24PM

18
#2 - Pete Johns / @johnsyweb

01/11/2011 at 05:01PM

18
#3 - derp derp / @derp__

01/12/2011 at 03:36AM

18
#4 - Martin Sander / @0x89

01/14/2011 at 01:35PM

18
#5 - Karol Samborski / @edv1989

01/15/2011 at 02:59PM

18
#6 - AD / @golferTest101

01/16/2011 at 11:18AM

18
#7 - ls lahrs / @lslah

01/17/2011 at 08:55AM

18
#8 - SirVer / @SirVerII

01/22/2011 at 02:09PM

18
#9 - iCross / @iCrossOfficial

02/01/2011 at 05:24AM

18
#10 - Ujjwol Lamichhane / @Ujjwol

02/02/2011 at 07:22PM

18
#11 - Tim Chase / @gumnos

02/03/2011 at 04:27AM

18
#12 - Andrew Dorman / @andydorman

02/18/2011 at 01:40PM

18
#13 - Joost / @vlabakje

02/20/2011 at 04:50AM

18
#14 - Pasha Klets / @p01nt

02/25/2011 at 02:27AM

18
#15 - vg / @vimgolfer

02/27/2011 at 02:23PM

18
#16 - Jon Olick / @JonOlick

03/25/2011 at 09:49AM

18
#17 - Emile Swarts / @EmileSwarts

06/09/2011 at 01:17PM

18
#18 - Hu Junfeng / @junfeng

08/01/2011 at 03:40AM

18
#19 - Justin Love / @wondible

09/02/2011 at 06:26AM

18
#20 - William Dunand / @wdunand

11/08/2011 at 12:44AM

18
#21 - You-Siang Lin / @yslinnctu

11/30/2011 at 07:16PM

18
#22 - Abdel Said / @abdelsaid

01/15/2012 at 11:36AM

18
#23 - Vasil Sakarov / @vsakarov

01/15/2012 at 04:43PM

18
#24 - Dan Hart / @DHJHart

02/07/2012 at 09:14AM

18
#25 - Renat Aksitov / @Korvin79

03/03/2012 at 10:11AM

18
#26 - Rod Knowlton / @codelahoma

05/25/2012 at 06:17PM

18
#27 - Urtica dioica / @udioica

05/29/2012 at 02:44PM

18
#28 - Kerson Hsiao / @KersonHsiao

08/01/2012 at 01:46AM

18
#29 - Joel Elkins / @dice_tea

03/04/2013 at 09:53PM

18
#30 - Trevor Powell / @DoomedBunnies

03/24/2013 at 10:53PM

18
#31 - Marco Hinz / @_mhinz_

05/23/2013 at 01:24AM

18
#32 - Petro Тrouq / @zulolosi

07/04/2013 at 02:34PM

18
#33 - Bradd Szonye / @bszonye

07/14/2013 at 08:33PM

18
#34 - Joonas Pihlajamaa / @jokkebk

02/19/2014 at 01:08PM

18
#35 - John Braxler / @braxler

04/23/2014 at 10:54AM

19
#36 - Balkoth / @_Balkoth_

01/11/2011 at 04:28PM

19
#37 - Oleg Roshupkin / @jjjahson

01/13/2011 at 10:20PM

19
#38 - Dragan Cvetinovic / @kawkafi

05/02/2011 at 07:47AM

19
#39 - Pei-Lun Lee / @ypcatw

01/07/2012 at 08:41PM

19
#40 - Arton0306 / @Arton0306

01/10/2012 at 10:45PM

19
#41 - Chris Brown / @engineercyb

09/11/2012 at 05:59PM

19
#42 - US Dollar Price / @USDollarPrice

11/05/2013 at 11:56PM

19
#43 - jgpaiva / @jgpaiva

02/10/2014 at 12:13PM

19
#44 - Johan Berg / @_berg85

02/14/2014 at 02:23AM

19
#45 - paulfariello / @paulfariello

12/12/2014 at 07:14AM

20
#46 - Federico Galassi / @federicogalassi

01/11/2011 at 02:53PM

20
#47 - Toto l'haricot / @nico_le_terribl

01/12/2011 at 07:32AM

20
#48 - lemming / @darthlemming

01/18/2011 at 10:34AM

20
#49 - Edwin Merkled / @emacs_viper

01/25/2011 at 03:32AM

20
#50 - Artem Dudarev / @dudarev

01/30/2011 at 02:23AM

20
#51 - Mikael Gustavsson / @slvmnd

04/18/2011 at 09:38AM

20
#52 - Johan Sveholm / @rymdtjuren

06/23/2011 at 12:13AM

20
#53 - Sergey Panin / @dixPro

07/20/2011 at 02:14PM

20
#54 - Yann Moisan / @YannMoisan

01/26/2013 at 08:25AM

20
#55 - Steve Tjoa / @stevetjoa

07/30/2013 at 10:24AM

20
#56 - Marcin Sza / @coot_

10/21/2013 at 10:01AM

20
#57 - Quota / @Quotad

02/14/2014 at 02:10AM

21
#58 - Stephen Morrow / @yawmark

01/11/2011 at 07:19PM

21
#59 - Gael / @darkael2

01/12/2011 at 04:13AM

21
#60 - Ash Searle / @hexmen

03/10/2011 at 12:25PM

21
#61 - Justin Cullen / @zenguine

02/27/2012 at 03:21PM

22
#62 - Benoît Ryder / @benoitryder

01/11/2011 at 01:28PM

22
#63 - Matthew Draper / @_matthewd

01/11/2011 at 09:04PM

22
#64 - Franco Lazzarino / @flazz

01/12/2011 at 11:06AM

22
#65 - Kurinniy Alexander / @kurinniy

01/21/2011 at 06:28AM

22
#66 - Vernon Thommeret / @synotic

01/30/2011 at 09:27AM

22
#67 - Terje Larsen / @terlars

04/08/2011 at 03:12AM

23
#68 - Francisco Dibar / @frandibar

01/11/2011 at 04:32PM

23
#69 - Matti Hänninen / @mjhanninen

01/28/2011 at 10:04PM

23
#70 - Graham O' Malley / @GrahamOMalley

11/07/2012 at 10:05AM

23
#71 - Caek / @Caek_

07/13/2014 at 10:23PM

23
#72 - PLS / @jaegd

08/03/2014 at 05:25PM

24
#73 -  Ikhsan Maulana / @ixandidu

01/14/2011 at 09:21AM

24
#74 - drio / @drio

03/23/2011 at 02:48PM

24
#75 - Raeez / @raeez

04/12/2011 at 11:26AM

24
#76 - KMNK / @kmnk

06/11/2011 at 01:03PM

24
#77 - Amy Ciavolino / @imightbeAmy

02/17/2013 at 09:30AM

25
#78 - Jordan Lewis / @JordanALewis

01/11/2011 at 12:51PM

25
#79 - Daniel Harrington / @rubiii

12/10/2011 at 01:22PM

25
#80 - Kurt Gaastra / @KGaastra

02/16/2012 at 12:14PM

25
#81 - David Sanders / @SandersCD

02/26/2012 at 06:32PM

25
#82 - brett / @brettyukich

09/22/2013 at 01:38PM

26
#83 - Christoph Stock / @christophstock

01/11/2011 at 12:36PM

26
#84 - Tesnorth / @Tesnorth

01/31/2012 at 12:19PM

26
#85 - Woojung Kim 김우중 / @_kimwz

07/15/2013 at 07:23PM

27
#86 - Clive Evans / @swish_bob

01/13/2011 at 12:46PM

27
#87 - Jomo / @yoyoyojomo

03/13/2012 at 11:24PM

27
#88 - cj / @cj01101

08/20/2013 at 02:59PM

28
#89 - Bryan Kam / @bryankam

01/11/2011 at 12:21PM

28
#90 - ananth / @ananth

06/17/2011 at 08:33AM

28
#91 - Scott Schlesier / @sschlesier

02/23/2012 at 10:14PM

28
#92 - Tyler / @tylerbindon

04/06/2013 at 09:59PM

28
#93 - Ram Tamtam / @ramtamtamtam

06/30/2014 at 08:48AM

29
#94 - h_east (DDD ready) / @h_east

01/11/2011 at 11:54AM

29
#95 - Matt Tarbit / @mtarbit

01/11/2011 at 01:18PM

29
#96 - Thomas Schönwälder / @Masei1988

01/12/2011 at 10:41AM

29
#97 - Soliman Sylvain / @sylvain_soliman

01/14/2011 at 02:27AM

29
#98 - Bradly Feeley / @bradly

01/15/2011 at 09:17PM

29
#99 - Rob Ciaccio / @RobertoCalavera

01/17/2011 at 01:02PM

29
#100 - peter.xiao / @yoco315

01/18/2011 at 11:07AM

29
#101 - Tom Duijf / @tomduijf

02/12/2011 at 08:18AM

29
#102 - Loc Nguyen / @Loc_Sic

03/30/2011 at 08:15AM

29
#103 - Ilya Strukov / @i1ey

05/02/2011 at 01:39AM

29
#104 - mightyfoo / @mightyfoo

05/26/2011 at 03:38PM

29
#105 - Dave / @zzdave13

07/16/2011 at 10:02AM

29
#106 - p0ckets / @p0ckets

10/07/2011 at 02:33AM

29
#107 - Peter Esselius / @esselius

12/06/2011 at 12:10PM

29
#108 - Ben Somers / @somanyrobots

12/24/2011 at 03:34PM

29
#109 - Chun Yang / @cccyang

07/27/2012 at 02:38AM

29
#110 - James / @Dronak

09/16/2013 at 07:57PM

30
#111 - Paul King / @nrocy

01/11/2011 at 10:43AM

30
#112 - Mattiassich Ákos / @mattiassicha

01/11/2011 at 12:18PM

30
#113 - Magnus Hörberg / @magnush_

01/18/2011 at 10:59AM

30
#114 - Thom Hughes / @thom_hughes_1

04/06/2011 at 04:17PM

30
#115 - Derrick Camerino / @robustdj

04/22/2011 at 10:25PM

30
#116 - wusher / @wusher

05/31/2011 at 08:01AM

30
#117 - Øystein Walle / @oysteinwalle

07/03/2011 at 05:14PM

30
#118 - Josh Hawthorne / @JoshHawthorne

07/05/2011 at 04:11PM

30
#119 - Panino Matic / @paninomatik

10/27/2011 at 02:17PM

30
#120 - Xavier Nayrac / @lkdjiin

01/08/2012 at 01:41AM

30
#121 - bmamax / @bmamax

01/17/2012 at 09:13AM

30
#122 - 無ん垢の叫び / @john_ababa

02/21/2012 at 03:17AM

30
#123 - Reed Riley / @ReedRile

08/12/2012 at 03:35PM

30
#124 - Rob Grijs / @robgrijs

10/14/2012 at 02:51AM

30
#125 - Daniel Jonsson / @DanielJonss

01/17/2013 at 12:20PM

30
#126 - BJ Terry / @ThatBJTerry

05/20/2014 at 11:02PM

30
#127 - r. / @rmarvie

12/20/2014 at 01:10PM

31
#128 - Eivind Jahren / @HaskellElephant

01/14/2011 at 04:45PM

31
#129 - paul_carey / @paul_carey

01/21/2011 at 03:31AM

31
#130 - Steven Occhipinti / @steveocchipinti

02/02/2011 at 07:04PM

31
#131 - dschobel / @dschobel

02/16/2011 at 06:14AM

31
#132 - Neal Lindsay / @neall

03/18/2011 at 06:01AM

31
#133 - Masashi Iizuka / @uochan

04/24/2011 at 12:52AM

31
#134 - arminas / @arminas

06/22/2011 at 02:09AM

31
#135 - Jakub Arnold / @darthdeus

12/19/2011 at 08:27AM

31
#136 - Burkhard Zimmermann / @BurkZimm

12/31/2011 at 11:22AM

31
#137 - Ben Wagaman / @jamin4jc

01/12/2012 at 09:49PM

31
#138 - Nathan Manousos / @trafnar

04/05/2012 at 11:27PM

31
#139 - Jim Kalafut / @jimkalafut

09/23/2013 at 09:09PM

31
#140 - Oliver Christ / @0liverChrist

11/11/2013 at 02:27PM

31
#141 - CHIP CASTLE / @chipcastle

12/28/2013 at 09:40AM

31
#142 - Felipe Jaramillo F / @mrfelipe

04/17/2014 at 06:00AM

32
#143 - Kevin Hamer / @khamer

01/19/2011 at 02:23PM

33
#144 - Alex David / @alexd_me

05/03/2012 at 08:17PM

34
#145 - pablo flouret / @quuxbaz

01/13/2011 at 03:23PM

34
#146 - NuM / @NuM314

10/05/2013 at 05:12PM

35
#147 - szetobo / @szetobo

01/11/2011 at 10:12PM

35
#148 - snaky / @snaky

01/19/2011 at 04:40AM

36
#149 - Dan Dorman / @dandorman

01/18/2011 at 10:24AM

36
#150 - Miha Filej / @mfilej

11/26/2011 at 08:40AM

36
#151 - Jyun-Fan Tsai / @fakecolor

02/10/2012 at 07:49PM

38
#152 - Dmitry Teslenko / @krab_mozga

01/19/2011 at 05:48AM

39
#153 - Przemysław Pawełczyk / @przemoc86

01/15/2011 at 11:32AM

41
#154 - Eric Andres / @eric_m_andres

12/05/2012 at 09:42AM

43
#155 - Stefan Schmidt / @stafue

12/06/2013 at 08:16AM

44
#156 - Ivo Dancet / @caifara

12/03/2011 at 02:04PM

46
#157 - ksauzz / @ksauzz

04/24/2011 at 12:59AM

47
#158 - niquola / @niquola

01/28/2011 at 03:56PM

47
#159 - Matt Donahoe / @mdonahoe

11/26/2011 at 01:41PM

51
#160 - Philipp Bayer / @PhilippBayer

01/30/2011 at 03:58PM

52
#161 - fdsfasdf / @fdsfasdf1

12/14/2011 at 12:03PM

57
#162 - Tomasz Zurkowski / @doriath88

04/18/2011 at 03:45AM

57
#163 - Dean / @thecamelwalk

10/17/2011 at 11:16PM

58
#164 - Takuya Nishigori / @nishigo_ri

04/24/2011 at 12:50AM

61
#165 - 軽給 / @kei_q

04/24/2011 at 12:55AM

65
#166 - Stephen Paul Weber / @singpolyma

01/12/2011 at 01:27PM

363
#167 - personlink / @personlink

04/07/2011 at 01:56AM