MeasureWorks - Startupbootcamp - Performance Workshop

557 views

Published on

My slides from StartupBootcamp Amsterdam workshop. Introducing the importance of performance from an end users point of view...

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
557
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

MeasureWorks - Startupbootcamp - Performance Workshop

  1. 1. @jeroentjepkemaPerformance :: Usability :: Experience
  2. 2. Are you ready for customers? Why performance matters for your online strategy Startup Bootcamp Amsterdam, April 15, 2013
  3. 3. http://bit.ly/MW-DML13
  4. 4. Online Analytics
  5. 5. Everywebsite has goals
  6. 6. Organic Search Campaigns Ad Network Transactional site Visitor Offer €" Abondenment) Upselling Reach Purchase step 1 €" Purchase step 2 €" Mailing, alerts, €" promotions Conversion €"Disengagement) Enrolment Impact)on)site) €" Negative €" Positive
  7. 7. €" Media site Enrolment Targeted €" embedded add Add Network Visitor €" €" Advertiser siteDeparture( Impact(on(site( €" Negative €" Positive
  8. 8. Web Analytics measures themovement towards these goals
  9. 9. A simple analytics model: A$enon" Engagement( Conversion( NEW VISITORS GROWTH CONVERSION SEARCHES RATE PAGES TIME TWEETS MENTIONS NUMBER OF VISITS PER VISIT ON SITE x" ADS SEEN ORDER LOSS VALUE BOUNCE RATE
  10. 10. Why did customers drop off?‣Price‣Functional errors?‣Performance issues?
  11. 11. Why did customers drop off?‣Price‣Functional errors?‣Performance issues? What’s the business impact? ‣Lost customers? ‣Revenue risked? ‣In Euros?
  12. 12. We needcontext!
  13. 13. Complete Web Monitoring
  14. 14. Web Analytics(what did they do on the site?) Complete Web Monitoring
  15. 15. Web Analytics Usability(what did they do on (how did they the site?) interact with it?) Complete Web Monitoring
  16. 16. Web Analytics Usability Performance(what did they do on (how did they (could they do what the site?) interact with it?) they wanted to?) Complete Web Monitoring
  17. 17. Web Analytics Usability Performance(what did they do on (how did they (could they do what the site?) interact with it?) they wanted to?) Complete Web Monitoring VoC (what were their motivations?)
  18. 18. Web Analytics Usability Performance(what did they do on (how did they (could they do what the site?) interact with it?) they wanted to?) Complete Web Monitoring VoC Social Media (what were their (what were they motivations?) saying?)
  19. 19. Web Analytics Usability Performance(what did they do on (how did they (could they do what the site?) interact with it?) they wanted to?) Complete Web Monitoring VoC Social Media Competition (what were their (what were they (what are they up motivations?) saying?) to?)
  20. 20. “Hard” data Web Analytics Usability Performance(what did they do on (how did they (could they do what the site?) interact with it?) they wanted to?) Complete Web Monitoring VoC Social Media Competition (what were their (what were they (what are they up motivations?) saying?) to?) “Soft” data
  21. 21. “Hard” data Web Analytics Usability Performance(what did they do on (how did they (could they do what the site?) interact with it?) they wanted to?) Complete Web Monitoring VoC Social Media Competition (what were their (what were they (what are they up motivations?) saying?) to?) Source: Complete Web Monitoring, Sean Power/Alistair Croll, 2009 “Soft” data
  22. 22. Performance?
  23. 23. Abandonment"Rate"Across"200+"Sites"/"177+"Million"Page"Views" Over"2"weeks"/"All#Browsers# 30" 25"Abandonment"Rate"(%)" 20" Abandonment*Rate*,* 15" All*Browsers* 10" 5" 0" 0" 1" 2" 3" 4" 5" 6" 7" 8" 9" 10" 11" 12" 13" 14" 15" Page"Load"Time"Band"(sec.)" Source: Gomez real user monitoring
  24. 24. Abandonment"Rate"Across"200+"Sites"/"177+"Million"Page"Views" Over"2"weeks"/"All#Browsers# Over"2"weeks"/"All#Browsers#vs.#iPhone#Safari# 30" 25"Abandonment"Rate"(%)" 20" Abandonment*Rate*,* All*Browsers* Abandonment*Rate*,* 15" All*Browsers* Abandonment*Rate*,* iPhone*Safari* 10" 5" 0" 0" 1" 2" 3" 4" 5" 6" 7" 8" 9" 10" 11" 12" 13" 14" 15" Page"Load"Time"Band"(sec.)" Source: Gomez real user monitoring
  25. 25. I(inter)action @jeroentjepkema, MeasureWorks
  26. 26. 0
  27. 27. 0,3 Instantaneous: I like it!0
  28. 28. 1 Interaction: Let’s conversate...0,3 Instantaneous: I like it!0
  29. 29. 3 Mmm, shall I click away?1 Interaction: Let’s conversate...0,3 Instantaneous: I like it!0
  30. 30. 10 Only if the task/content is relevant3 Mmm, shall I click away?1 Interaction: Let’s conversate...0,3 Instantaneous: I like it!0
  31. 31. 10 Only if the task/content is relevant3 Mmm, shall I click away?1 Do I want to conversate? This is where the magic happens0,3 Do I like it?0
  32. 32. How we perceive “interaction”?
  33. 33. How we perceive “interaction”? Sensitive for specific tasks
  34. 34. How we perceive “interaction”? Sensitive for specific tasks Always compared to past experiences
  35. 35. How we perceive “interaction”? Sensitive for specific tasks Always compared to past experiences Task completion has positive impact
  36. 36. How we perceive “interaction”? Sensitive for specific tasks Always compared to past experiences Task completion has positive impact Slowdowns hurts
  37. 37. Experience the differenceTested with webpagetest.org (3G traffic shaping, 2000Kbps Down, 1000 Kbps Up, 150ms latency)
  38. 38. Ultimate goal = “flow state”
  39. 39. Relevant content, to supporttask completion
  40. 40. With fast delivery,focus on interaction
  41. 41. “” Flow is an “optimal experience” that is “intrinsically enjoyable”
  42. 42. Myth busted?
  43. 43. Experiment 1Technology vs. Perceived
  44. 44. Which website would you recommend in terms ofperformance? Desktop only, fixed Buy a summer holiday 100 users selection of shops online (Travel30)
  45. 45. Ranking Perceived Technology 1 Sunweb 2 Globe 3 Neckermann 4 D-reizen 5 ArkeTechnology vs. Perceived Study performed by MeasureWorks for Emerce eTravel, 2013
  46. 46. Ranking Perceived Technology 1 Sunweb Sunweb 2 D-reizen Globe 3 Neckermann Neckermann 4 Arke D-reizen 5 Globe ArkeTechnology vs. Perceived Study performed by MeasureWorks for Emerce eTravel, 2013
  47. 47. Ranking Perceived Technology 1 Sunweb Sunweb 2 D-reizen Globe 3 Neckermann Neckermann 4 Arke D-reizen 5 Globe ArkeTechnology vs. Perceived Study performed by MeasureWorks for Emerce eTravel, 2013
  48. 48. Experiment 2
  49. 49. Mobile shopping experience setup.... Perform 2 tasks: 100 mobile users ‣Buy a book Mobile browsers only ‣Buy a T-shirt via 3G, no WiFi
  50. 50. Speed
  51. 51. 50 Many functional 37,5 issues reported Round 1 with Zalando 25 42,1 45 12,5 20 24 15,4 7,7 3,9 0 4 Zalando HM V&D Tom Tailor Design Speed Mobile Readiness Other 1. Buy a T-shirt 2. Review 40 30 Round 2 20 34 54 10 12 15,4 21 18 8 6 0 Zalando HM V&D Tom Tailor Design Speed Mobile Readiness OtherMobile Only research:- Task completion: Only use smartphone to buy a book- N = 100, users range from 20-65
  52. 52. Nexus - Android - 3GTested with webpagetest.org (3G traffic shaping, 2000Kbps Down, 1000 Kbps Up, 150ms latency)
  53. 53. Nexus - Android - 3GTested with webpagetest.org (3G traffic shaping, 2000Kbps Down, 1000 Kbps Up, 150ms latency)
  54. 54. Mobilereadiness
  55. 55. 100 75 50 44 46 25 24 26 16 16 16 12 0 Bol.com Selexyz Bruna Other Design Speed Mobile Readiness Other Design Speed Mobile Readiness Other 1. Buy a book 2. Review 3. Buy at a different storeMobile Only research:- Task completion: Only use smartphone to buy a book- N = 100, users range from 20-65
  56. 56. Bol.com Selexyz De Boekerij ECI Bruna Cosmox
  57. 57. Target your audience! 40% Native Mobile Web 58% 55% 30% 20% 40% 40% Mobile Web Native 42% 45% 25% 10% 18% < 34 > 35 0% Speed Readiness < 34 > 35
  58. 58. Recipe forperformance
  59. 59. You 1. Eco-System of me
  60. 60. Deliver the same experience to all your (mobile) users
  61. 61. Regular website Native ApplicationDeliver the same experience to all your (mobile) users
  62. 62. Regular website Optimized Mobile Web Native ApplicationDeliver the same experience to all your (mobile) users
  63. 63. Mobile first
  64. 64. Prioritize your business goalsMobile first
  65. 65. Deliver content accordingly Prioritize your business goalsMobile first
  66. 66. #2Design for (mobile)use cases
  67. 67. Focus on taskcompletion
  68. 68. With mobileconditions in mind
  69. 69. Optimized for the right screen
  70. 70. Native app Mobile Web - Portrait Mobile Web - Landscape
  71. 71. #fail
  72. 72. Why it matters? 76% of mobileconsumers won’t retry more than twice Source: Compuware, 2012, Engaging the tablet user; What to expect from web sites?
  73. 73. Why it matters? 89% of (mobile)consumers will leave to the competition Source: Oracle, 2012, Customer Experience Survey
  74. 74. #3Collecting data
  75. 75. (CLOUD) DATA CENTER INTERNAL USERS INTERNET CUSTOMERS Third-party/ Cloud Services Storage DB Servers Web Servers Major Local This is what you control... Network What you’re blamed for.. ISP Content ISP Delivery Mobile Load Networks Carriers Middleware App BalancersMainframe Servers Servers
  76. 76. Measuring performance?
  77. 77. Measuring performance? Outside-in, fromthe browser perspective...
  78. 78. PerformanceMeasurement Toolkit
  79. 79. Synthethic Real User Benchmark MonitoringPerformance Measurement toolkit
  80. 80. Simulate business transactions
  81. 81. Via multiple devices & browsers
  82. 82. From multiple locations...
  83. 83. Used for error detection & Root Cause Analysis
  84. 84. Used for error detection & Root Cause Analysis
  85. 85. Used for error detection & Root Cause Analysis
  86. 86. Ultimately, synthetic monitoring shows you if yoursite’s working or not...
  87. 87. But, synthetic isn’t enough...
  88. 88. Synthetic heartbeat Real UsersBut, synthetic isn’t enough...
  89. 89. Real User Real User Benchmark MonitoringPerformance Measurement toolkit
  90. 90. Navigation timing2 ways of measuring... Browser RUM Disclaimer: There’s also third category Datacenter RUM, this will not be covered in this out of the presentation. Contact me if your want details
  91. 91. h"p://www.w3.org/TR/naviga2on32ming/5 Some background info:Navigation timing http://66.7percentangel.com/2011/12/breaking-down-onload-event-performance-bookmarklet/ http://www.html5rocks.com/en/tutorials/webperformance/basics/ http://www.w3.org/TR/2011/CR-navigation-timing-20110315/#nt-dom-content-event-start
  92. 92. http://caniuse.com/nav-timing
  93. 93. 1 2 3 4 As pages execute, After onload tag sendInsert tag (.js file) into Pages are requested tag collects detailed report for (mobile) web pages from browser/device performance metrics further analysis tag.js tag.js tag.js tag.js Browser RUM
  94. 94. Gomez
  95. 95. Gomez
  96. 96. Soasta
  97. 97. Torbit
  98. 98. Relies on navigation timing API, custom variables can be addedGoogle Analytics
  99. 99. New Relic
  100. 100. Ultimately, Real User Monitoring shows you how manyusers are affected by bad performance...
  101. 101. Real User benchmarkingPerformance Measurement toolkit
  102. 102. First view 11.349s Real usage Repeat view 4.357s
  103. 103. Average page load time per bandwith (seconds) for Dutch eTravel30 8,8 1,5 mbps 10 mbps 20 mbps 3,9 3,4 56% 13% Bandwith
  104. 104. Average page load time per Browser (seconds) Dutch eTravel30 IE7 6,5 IE8 3,9 IE9 3,6 40% 8% Devices used
  105. 105. Webpagetest.org
  106. 106. Object level !! Webpagetest.org Optimization tips !
  107. 107. Webpagetest.org
  108. 108. Ultimately, Real User benchmarking gives you periodicinsight in real usage scenario’s...
  109. 109. Performance surveysPerformance Measurement toolkit
  110. 110. Usability iseverywhere
  111. 111. Homepage Homepage Last Minutes Heatmaps
  112. 112. Expected Experience vs. Delivered Experience Surveys
  113. 113. 7 Average experience rating 6 5 4 3 2 1 1 2 3 4 5 6 7 Average expectation rating Find a websiteSearch for a book Order a book
  114. 114. 7 Average experience rating 6 5 4 3 2 1 1 2 3 4 5 6 7 Average expectation rating Find a websiteSearch for a book Order a book
  115. 115. 7 Average experience rating 6 5 4 3 Fix it fast 2 1 1 2 3 4 5 6 7 Average expectation rating Find a websiteSearch for a book Order a book
  116. 116. Optimized vsNon-optimized
  117. 117. Selecting items- +
  118. 118. To login or not?
  119. 119. Ultimately, performance surveys give you periodic insightin task completion issues...
  120. 120. Synthethic monitoring Real User Monitoring Real User benchmarking Performance surveysPerformance Measurement toolkit
  121. 121. Synthethic monitoring Real User Monitoring Real User benchmarking Performance surveys Benefits Benefits Benefits BenefitsHeartbeat, runs without traffic Real usage information from Testing of user scenario’s Soft data feedbackTest specific customer journeys all users!! with real devices/bandwith Abandonment optimizationObject level detail Trending/Optimization Optimization details Test before go liveCollect detailed alerts, including Business impact Competitive scanroot cause analysis Desktop/Mobile Site Desktop/Mobile Site Desktop/Mobile Site Real User Desktop/Mobile SiteWebsitepulse LogNormal Webpagetest WufooWatchmouse Torbit Browserstack UsabillaAlertsite New Relic Loop11 Google Analytics Crazyegg Mobile Apps Mobile Apps Mobile Apps Mobile AppsGomez Gomez Perfecto Mobile Loop11Keynote New Relic Device Anywhere Localytics Google AnalyticsPerformance Measurement toolkit
  122. 122. #4Service Levels
  123. 123. Defining service levels & thresholds...
  124. 124. First thing is to establishing a baseline:
  125. 125. First thing is to establishing a baseline: A pre-defined set of metrics
  126. 126. First thing is to establishing a baseline: A pre-defined set of metrics that describes normal behavior
  127. 127. First thing is to establishing a baseline: A pre-defined set of metrics that describes normal behavior in order to detect variancies
  128. 128. First thing is to establishing a baseline: A pre-defined set of metrics that describes normal behavior in order to detect variancies and to be comparable within historic context
  129. 129. Then define service levels & thresholds...
  130. 130. Purchasing a book, Customer journeymust be completed (speed), Metric: Speedwhere every page loads under 4 sec., Target: Secusing IE8 and higher, User scenariofrom any location in the Netherlands, User locationsfor 95% of all users, Percentileevery day between 6am and 12pm, Windowmeasured with Real User Monitoring. Collection type Source: Metrics 101, Velocityconf 2010
  131. 131. #5Data Driven
  132. 132. Pagespeed
  133. 133. Page Load Time: Homepage Time to First Byte Start Render Document complete Fully loaded Sunweb 0,20s 1,45s 3,08s 3,41 Arke 0,30s 3,10s 3,39s 5,51 Top30 Average 0,39s 2,97s 5,32s 7,04 Neckermann 0,44s 2,03s 5,40s 6,20 D-reizen 0,35s 4,30s 7,24s 7,97 Globe 0,32s 2,80s 7,79s 8,91
  134. 134. Time to first byte Speed: 9,6s TTFB: 0,71s Worldticketcenter.nl Speed: 13,6s TTFB: 3,19s NShispeed.nl
  135. 135. Pagesize
  136. 136. Elements per page avg. Page Size (Kb) Sunweb 0% 15% 2% 80% 3% 233 D-reizen 22% 4% 48% 24% 2% 673 Globe 0% 33% 5% 50% 11% 713 Average 24% 6% 57% 10% 4% 1142 Arke 24% 6% 50% 20% 1% 1142Neckermann 0% 27% 3% 68% 1% 1528 Javascript CSS Images Flash HTML
  137. 137. 3d Party(content)
  138. 138. #Requests 3d Party objects % 3d Party Sunweb 58 2 3% Globe 84 5 6% Neckermann 99 16 16% D-reizen 111 19 17%Travel30 average 90 17 19% Arke 50 17 34%
  139. 139. Worldticketcenter.nl3025 22,020 19,01510 5 3,2 3,6 3,1 2,9 2,5 2,6 2,5 2,5 2,7 2,8 2,5 2,6 2,7 3,0 2,7 2,5 2,8 2,8 2,6 2,5 2,5 2,8 2,6 2,4 0 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 2 3 4 5 6 7 8 9 10 31 May 2012 1 June 2012
  140. 140. Worldticketcenter.nl302520151050 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 2 3 4 5 6 7 8 9 10 31 May 2012 1 June 2012
  141. 141. Firstvisuals
  142. 142. Sunweb D-reizen Arke Globe Neckermann 5,25 5,05 4,9 4,9 4,9 4,8 4,6 4,3 4,2 3,1 2,8 2,8 2,9 2,4 2,05 2,3 1,9 2,1 Start 1,9 1,45 renderHome page Landingpage Sun Detailed Page Booking Page
  143. 143. Globe Neckermann Sunweb D-reizen ArkeFirst visuals Homepage
  144. 144. First visuals details page GlobeNeckermann Sunweb D-reizen Arke
  145. 145. “Variation” Speedvariation
  146. 146. 543210 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Daily Average Min Max
  147. 147. Revenue risked543 above 15-20% variance is detected210 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Daily Average Min Max
  148. 148. 9,26 8,98 7,79 7,79 7,23 7,24 7,24 7,29 6,67 5,4 5,40 4,97 4,80 4,61 3,38 3,39 3,08 3,08 2,97 1,89Sunweb D-reizen Arke Globe Neckermann
  149. 149. Find the gaps...
  150. 150. Loadtime   Loadtime Functionaliteit Availability (Document   0-­‐2 0-­‐4 (  fully  l oaded  ) complete) www.homepage.nl 97,0% 2,20 3,50 10% 85% www.homepage.nl/autoverzekeren 99,0% 2,50 3,30 20% 90%www.homepage.nl/autoverzekeren/afsluiten 95,0% 2,30 3,60 15% 70% www.homepage.nl/contact 95,0% 2,43 3,57 20% 67% www.homepage.nl/zoeken 94,0% 2,48 3,62 23% 59% www.homepage.nl/productoverzicht 93,0% 2,53 3,67 25% 52% www.homepage.nl/ab-­‐test/variant1 92,0% 2,58 3,72 28% 44% www.homepage.nl/ab-­‐test/variant2 91,0% 2,63 3,77 30% 37% www.homepage.nl/facebookplugins 90,0% 2,68 3,82 33% 29% www.homepage.nl/muziekpagina 89,0% 2,73 3,87 35% 22% www.homepage.nl/faq 88,0% 2,78 3,92 38% 14% Service Level Report
  151. 151. 30 3000 Pagesize (kb) 20 2000 URLs 3rdURL’s URLs 10 1000 Page Size (KB) 0 0 33 34 35 36 37 38 39 40 Your website vs. Competition
  152. 152. Discovering patterns
  153. 153. Revenue risked 10.000 visitors Optimale flow Speed (s) Availability (%) Bouncerate (%) Conversie Page 1 5,5 100 70 3000 Page 2 13,0 100 75 750 Page 3 2,0 100 60 300 Page 4 3,5 88,5 5 252 10.000 visitors Actual flow Speed (s) Availability (%) Bouncerate (%) Conversie Page 1 8,0 100 75 2500 Page 2 15,5 100 80 500 Page 3 2,0 100 60 200 Page 4 8,0 88,5 5 168
  154. 154. Performance vs. Sentiment
  155. 155. Web%traffic%%(Pageviews)! 1.000.000! 1.200.000! 200.000! 400.000! 600.000! 800.000! 0!Mei;09!jun;09! jul;09!aug;09!sep;09!okt;09!nov;09!dec;09!jan;10!feb;10!mrt;10!apr110!mei10!jun;10! jul;10!aug;10!sep;10!okt;10!nov;10!dec;10!Jan;11!feb;11! Max.%number%of%pageviews%per%hour%!mrt;11!apr;11! Christmas/EOY%mei;11! MAX!capacity! Safety!capacity! Traffic!Realized! Traffic!Forecast!jun;11! jul;11!aug;11!sep;11!okt;11!nov;11!dec;11! Capacity Management
  156. 156. #6 Continuousperformance diet
  157. 157. Low hanging fruit‣ Reduce page size‣ Enable Gzip‣ Reduce the number ofroundtrips‣ Structure the page to improverendering & download‣ Enable caching‣ Clean up & remove duplicates‣ Minify javascript
  158. 158. Low hanging fruit Advanced optimization‣ Reduce page size ‣ Non-blocking scripts‣ Enable Gzip ‣ Optimizing images ‣ Splitting payloads‣ Reduce the number of ‣ Asynchronous loadingroundtrips‣ Structure the page to improve ‣ Pre-loadingrendering & download ‣ Etc.‣ Enable caching‣ Clean up & remove duplicates‣ Minify javascript
  159. 159. Page size: 1660 Kb # requests: 89 Time to render: 1,29 sec. Document complete: 3,68 sec.Not Optimized
  160. 160. Page size: Page size: 1660 Kb 498 Kb # requests: # requests: 89 48 Time to render: Time to render: 1,29 sec. 1,10 sec. Document complete: Document complete: 3,68 sec. 1,54 sec.Not Optimized Optimized
  161. 161. Page size: Page size: 1660 Kb 498 Kb # requests: # requests: 89 48 Time to render: Time to render: 1,29 sec. Timeto first visual: 1,10 sec. 1,10 sec. vs 1,90 sec. Document complete: Document complete: 3,68 sec. 1,54 sec.Not Optimized Optimized
  162. 162. To summarize...
  163. 163. Performance isa requirement
  164. 164. Create great serviceNet Performance Score
  165. 165. Real users,real devices, real data
  166. 166. Slice & Dice
  167. 167. Detecting Trends
  168. 168. Be readyto recover
  169. 169. Create anexperience that Don’t let them click away performs
  170. 170. Questions? Or, else... ;-)
  171. 171. Page Load Time: Homepage 10,5 9,7 9,4 8,2 6,8 6,9 5,8 5,1 4,6 4,2 3,9 3,7 3,7 3,4 3,1 2,5 2,5 1,9 7write Alive Shoes Easyschool Fuel iLost Kinems Presentain Swogo Twoodo Synthetic Webpagetest
  172. 172. 25,2 23,5 23,7 17,8 16,6 15,3 15,7 14,7 13,6 13,5 10,5 10,29,4 9,7 9,4 8,7 8,9 8,2 7,6 7,7 6,9 4,2 4,6 3,9 3,7 3,4 2,3 7write Alive Shoes Easyschool Fuel iLost Kinems Presentain Swogo Twoodo NL US Asia Global coverage
  173. 173. iPhone 4s IE8 16 14,513 11 10,7 10,5 9,4 9,7 9,1 9,3 8,2 7,6 5,8 4,6 4,2 3,9 3,4 3,77write Alive Shoes Easyschool Fuel iLost Kinems Presentain Swogo Twoodo Mobile
  174. 174. > 1Mb uncomprized text, can be reduced to 450Kb> 640Kb Javascript, of which 1 is blocking (460Kb)
  175. 175. Cloudflare?
  176. 176. >400Kb images
  177. 177. Regular homepageOptimizedhomepage
  178. 178. Thanks! More questions?M: jtjepkema@measureworks.nlT: @jeroentjepkemaW: www.measureworks.nl

×