From 5f96f3332c56777794b29289225ba54189af932b Mon Sep 17 00:00:00 2001
From: SaintPeter <rex.schrader@gmail.com>
Date: Sun, 7 Feb 2016 09:25:29 -0800
Subject: [PATCH] Rename Wiki Articles to new Terminology

Map:
Waypoint => Challenge
Waypoints => Challenges
Bonfire => Algorithm
Bonfires => Algorithms
Zipline => Front-End-Project
Ziplines => Front-End-Projects
Basejump => Back-End-Project
Basejumps => Back-End-Projects

Also remove some random files which are not needed or stubs.
---
 Algorithm-Arguments-Optional.md                    | 121 ++++++++++++++++
 Algorithm-Binary-Agents.md                         | 120 ++++++++++++++++
 Algorithm-Boo-who.md                               |  36 +++++
 Algorithm-Caesars-Cipher.md                        |  92 ++++++++++++
 Algorithm-Check-for-Palindromes.md                 | 105 ++++++++++++++
 Algorithm-Chunky-Monkey.md                         | 140 ++++++++++++++++++
 Algorithm-Confirm-the-Ending.md                    |  34 +++++
 Algorithm-Convert-HTML-Entities.md                 |  88 ++++++++++++
 Algorithm-DNA-Pairing.md                           |  81 +++++++++++
 Algorithm-Diff-Two-Arrays.md                       |  81 +++++++++++
 Algorithm-Drop-it.md                               |  78 ++++++++++
 Algorithm-Everything-be-True.md                    |  76 ++++++++++
 Algorithm-Exact-Change.md                          |  90 ++++++++++++
 Algorithm-Factorialize-a-Number.md                 |  89 ++++++++++++
 Algorithm-Falsy-Bouncer.md                         |  48 +++++++
 Algorithm-Find-The-Longest-Word-in-a-String.md     |  94 ++++++++++++
 Algorithm-Finders-Keepers.md                       |  62 ++++++++
 Algorithm-Friendly-Date-Ranges.md                  | 119 +++++++++++++++
 Algorithm-Inventory-Update.md                      | 159 +++++++++++++++++++++
 Algorithm-Make-a-Person.md                         |  68 +++++++++
 Algorithm-Map-the-Debris.md                        | 103 +++++++++++++
 Algorithm-Meet-Algorithm.md                        |  37 +++++
 Algorithm-Missing-letters.md                       | 151 +++++++++++++++++++
 Algorithm-Mutations.md                             |  63 ++++++++
 Algorithm-No-Repeats-Please.md                     | 110 ++++++++++++++
 Algorithm-Pairwise.md                              |  97 +++++++++++++
 Algorithm-Pig-Latin.md                             | 123 ++++++++++++++++
 Algorithm-Repeat-a-String-Repeat-a-String.md       |  98 +++++++++++++
 Algorithm-Return-Largest-Numbers-in-Arrays.md      |  98 +++++++++++++
 Algorithm-Reverse-a-String.md                      |  38 +++++
 Algorithm-Roman-Numeral-Converter.md               |  51 +++++++
 Algorithm-Search-and-Replace.md                    |  91 ++++++++++++
 Algorithm-Seek-and-Destroy.md                      |  38 +++++
 Algorithm-Slasher-Flick.md                         |  63 ++++++++
 Algorithm-Smallest-Common-Multiple.md              | 110 ++++++++++++++
 Algorithm-Sorted-Union.md                          |  92 ++++++++++++
 Algorithm-Spinal-Tap-Case.md                       |  51 +++++++
 Algorithm-Steamroller.md                           |  68 +++++++++
 Algorithm-Style-Guide.md                           |  40 ++++++
 Algorithm-Sum-All-Numbers-in-a-Range.md            |  88 ++++++++++++
 Algorithm-Sum-All-Odd-Fibonacci-Numbers.md         |  72 ++++++++++
 Algorithm-Sum-All-Primes.md                        |  96 +++++++++++++
 Algorithm-Symmetric-Difference.md                  |  87 +++++++++++
 Algorithm-Title-Case-a-Sentence.md                 |  97 +++++++++++++
 Algorithm-Truncate-a-String.md                     |  56 ++++++++
 Algorithm-Validate-US-Telephone-Numbers.md         |  53 +++++++
 Algorithm-Where-art-thou.md                        | 121 ++++++++++++++++
 Algorithm-Where-do-I-belong.md                     |  58 ++++++++
 Algorithm-Wiki-Template.md                         |  49 +++++++
 Back-End-Project-Resources.md                      |  36 +++++
 Basejump-Resources.md                              |  36 -----
 Bonfire-Arguments-Optional.md                      | 121 ----------------
 Bonfire-Binary-Agents.md                           | 120 ----------------
 Bonfire-Boo-who.md                                 |  36 -----
 Bonfire-Caesars-Cipher.md                          |  92 ------------
 Bonfire-Check-for-Palindromes.md                   | 105 --------------
 Bonfire-Chunky-Monkey.md                           | 140 ------------------
 Bonfire-Confirm-the-Ending.md                      |  34 -----
 Bonfire-Convert-HTML-Entities.md                   |  88 ------------
 Bonfire-DNA-Pairing.md                             |  81 -----------
 Bonfire-Diff-Two-Arrays.md                         |  81 -----------
 Bonfire-Drop-it.md                                 |  78 ----------
 Bonfire-Everything-be-True.md                      |  76 ----------
 Bonfire-Exact-Change.md                            |  90 ------------
 Bonfire-Factorialize-a-Number.md                   |  89 ------------
 Bonfire-Falsy-Bouncer.md                           |  48 -------
 Bonfire-Find-The-Longest-Word-in-a-String.md       |  94 ------------
 Bonfire-Finders-Keepers.md                         |  62 --------
 Bonfire-Friendly-Date-Ranges.md                    | 119 ---------------
 Bonfire-Inventory-Update.md                        | 159 ---------------------
 Bonfire-Make-a-Person.md                           |  68 ---------
 Bonfire-Map-the-Debris.md                          | 103 -------------
 Bonfire-Meet-Bonfire.md                            |  37 -----
 Bonfire-Missing-letters.md                         | 151 -------------------
 Bonfire-Mutations.md                               |  63 --------
 Bonfire-No-Repeats-Please.md                       | 110 --------------
 Bonfire-Pairwise.md                                |  97 -------------
 Bonfire-Pig-Latin.md                               | 123 ----------------
 Bonfire-Repeat-a-String-Repeat-a-String.md         |  98 -------------
 Bonfire-Return-Largest-Numbers-in-Arrays.md        |  98 -------------
 Bonfire-Reverse-a-String.md                        |  38 -----
 Bonfire-Roman-Numeral-Converter.md                 |  51 -------
 Bonfire-Search-and-Replace.md                      |  91 ------------
 Bonfire-Seek-and-Destroy.md                        |  38 -----
 Bonfire-Slasher-Flick.md                           |  63 --------
 Bonfire-Smallest-Common-Multiple.md                | 110 --------------
 Bonfire-Sorted-Union.md                            |  92 ------------
 Bonfire-Spinal-Tap-Case.md                         |  51 -------
 Bonfire-Steamroller.md                             |  68 ---------
 Bonfire-Style-Guide.md                             |  40 ------
 Bonfire-Sum-All-Numbers-in-a-Range.md              |  88 ------------
 Bonfire-Sum-All-Odd-Fibonacci-Numbers.md           |  72 ----------
 Bonfire-Sum-All-Primes.md                          |  96 -------------
 Bonfire-Symmetric-Difference.md                    |  87 -----------
 Bonfire-Title-Case-a-Sentence.md                   |  97 -------------
 Bonfire-Truncate-a-String.md                       |  56 --------
 Bonfire-Validate-US-Telephone-Numbers.md           |  53 -------
 Bonfire-Where-art-thou.md                          | 121 ----------------
 Bonfire-Where-do-I-belong.md                       |  58 --------
 Bonfire-Wiki-Template.md                           |  49 -------
 Challenge-Access-Array-Data-with-Indexes.md        |  12 ++
 ...Access-Multi-Dimensional-Arrays-With-Indexes.md |  16 +++
 Challenge-Accessing-Nested-Arrays-In-Json.md       |  22 +++
 Challenge-Accessing-Nested-Objects-In-Json.md      |  22 +++
 ...ing-Objects-Properties-With-Bracket-Notation.md |  16 +++
 ...ing-Objects-Properties-With-The-Dot-Operator.md |  16 +++
 ...-Accessing-Objects-Properties-With-Variables.md |  15 ++
 ...e-Add-Alt-Text-to-an-Image-for-Accessibility.md |   5 +
 Challenge-Add-Borders-Around-your-Elements.md      |   3 +
 ...Different-Margins-to-Each-Side-of-an-Element.md |   1 +
 ...Different-Padding-to-Each-Side-of-an-Element.md |  11 ++
 ...nge-Add-Elements-within-your-Bootstrap-Wells.md |   2 +
 ...Add-Font-Awesome-Icons-to-all-of-our-Buttons.md |   4 +
 Challenge-Add-Font-Awesome-Icons-to-our-Buttons.md |   4 +
 ...enge-Add-ID-Attributes-to-Bootstrap-Elements.md |   4 +
 Challenge-Add-Images-to-your-Website.md            |   3 +
 ...ge-Add-New-Properties-to-a-JavaScript-Object.md |   3 +
 Challenge-Add-Placeholder-Text-to-a-Text-Field.md  |   3 +
 ...nge-Add-Rounded-Corners-with-a-Border-Radius.md |  12 ++
 Challenge-Add-Two-Numbers-with-JavaScript.md       |   4 +
 Challenge-Add-a-Negative-Margin-to-an-Element.md   |   1 +
 Challenge-Add-a-Submit-Button-to-a-Form.md         |   8 ++
 ...lenge-Add-your-JavaScript-Slot-Machine-Slots.md |  10 ++
 ...Adding-A-Default-Option-In-Switch-Statements.md |  19 +++
 Challenge-Adjust-the-Margin-of-an-Element.md       |   9 ++
 Challenge-Adjusting-the-Padding-of-an-Element.md   |   8 ++
 Challenge-Appending-Variables-to-Strings.md        |  10 ++
 ...nge-Apply-the-Default-Bootstrap-Button-Style.md |  23 +++
 Challenge-Assignment-With-A-Returned-Value.md      |  11 ++
 Challenge-Assignment-with-Divided-by-Equals.md     |   8 ++
 Challenge-Assignment-with-Minus-Equals.md          |   8 ++
 Challenge-Assignment-with-Plus-Equals.md           |  11 ++
 Challenge-Assignment-with-Times-Equals.md          |  15 ++
 ...e-Bring-your-JavaScript-Slot-Machine-to-Life.md |  10 ++
 Challenge-Build-JavaScript-Objects.md              |  15 ++
 ...e-Call-out-Optional-Actions-with-Button-Info.md |   4 +
 Challenge-Center-Text-with-Bootstrap.md            |   4 +
 Challenge-Chaining-If-Else-Statements.md           |  16 +++
 ...e-Change-Text-Inside-an-Element-Using-jQuery.md |  10 ++
 Challenge-Change-Text-with-Click-Events.md         |   4 +
 ...ge-Change-the-CSS-of-an-Element-Using-jQuery.md |  13 ++
 Challenge-Change-the-Color-of-Text.md              |   3 +
 Challenge-Change-the-Font-Size-of-an-Element.md    |   5 +
 ...heck-Radio-Buttons-and-Checkboxes-by-Default.md |   3 +
 ...eck-the-Length-Property-of-a-String-Variable.md |   4 +
 Challenge-Clone-an-Element-Using-jQuery.md         |   4 +
 Challenge-Comment-out-HTML.md                      |  15 ++
 Challenge-Comment-your-JavaScript-Code.md          |  10 ++
 Challenge-Comparison-With-The-Equality-Operator.md |  28 ++++
 ...ison-With-The-Greater-Than-Equal-To-Operator.md |  14 ++
 ...ge-Comparison-With-The-Greater-Than-Operator.md |  14 ++
 ...enge-Comparison-With-The-Inequality-Operator.md |  13 ++
 ...parison-With-The-Less-Than-Equal-To-Operator.md |  13 ++
 ...lenge-Comparison-With-The-Less-Than-Operator.md |  13 ++
 ...Comparison-With-The-Strict-Equality-Operator.md |  12 ++
 ...mparison-With-The-Strict-Inequality-Operator.md |  11 ++
 ...ge-Comparisons-With-The-Logical-And-Operator.md |  23 +++
 ...nge-Comparisons-With-The-Logical-Or-Operator.md |  24 ++++
 Challenge-Concatenate-Strings-with-.concat.md      |   3 +
 ...nge-Concatenating-Strings-with-Plus-Operator.md |   8 ++
 ...nating-Strings-with-the-Plus-Equals-Operator.md |  12 ++
 Challenge-Condense-arrays-with-reduce.md           |  13 ++
 ...-Construct-JavaScript-Objects-with-Functions.md |  13 ++
 Challenge-Constructing-Strings-with-Variables.md   |   9 ++
 Challenge-Convert-JSON-Data-to-HTML.md             |  24 ++++
 Challenge-Count-Backwards-With-a-For-Loop.md       |  18 +++
 Challenge-Create-Bootstrap-Wells.md                |  26 ++++
 ...lenge-Create-Decimal-Numbers-with-JavaScript.md |   2 +
 ...enge-Create-a-Block-Element-Bootstrap-Button.md |   4 +
 Challenge-Create-a-Bootstrap-Button.md             |   4 +
 Challenge-Create-a-Bootstrap-Headline.md           |   2 +
 Challenge-Create-a-Bootstrap-Row.md                |   2 +
 Challenge-Create-a-Bulleted-Unordered-List.md      |  14 ++
 ...eate-a-Class-to-Target-with-jQuery-Selectors.md |   4 +
 Challenge-Create-a-Custom-Heading.md               |  12 ++
 Challenge-Create-a-Form-Element.md                 |   3 +
 Challenge-Create-a-JavaScript-Slot-Machine.md      |   8 ++
 Challenge-Create-a-Set-of-Checkboxes.md            |   5 +
 Challenge-Create-a-Set-of-Radio-Buttons.md         |   5 +
 Challenge-Create-a-Text-Field.md                   |   3 +
 Challenge-Create-an-Ordered-List.md                |  14 ++
 ...enge-Declare-JavaScript-Objects-as-Variables.md |  12 ++
 Challenge-Declare-JavaScript-Variables.md          |   4 +
 Challenge-Declare-String-Variables.md              |   4 +
 Challenge-Decrement-a-Number-with-Javascript.md    |  10 ++
 Challenge-Delete-HTML-Elements.md                  |   1 +
 ...e-Delete-Properties-from-a-JavaScript-Object.md |  26 ++++
 Challenge-Delete-your-jQuery-Functions.md          |   2 +
 Challenge-Disable-an-Element-Using-jQuery.md       |   8 ++
 Challenge-Ditch-Custom-CSS-for-Bootstrap.md        |   4 +
 ...Divide-One-Number-by-Another-with-JavaScript.md |   2 +
 Challenge-Escape-Sequences-in-Strings.md           |  15 ++
 Challenge-Escaping-Literal-Quotes-in-Strings.md    |   8 ++
 ...enge-Fill-in-the-Blank-with-Placeholder-Text.md |  11 ++
 Challenge-Filter-Arrays-with-filter.md             |   9 ++
 Challenge-Find-Numbers-with-Regular-Expressions.md |   6 +
 ...ge-Find-White-Space-with-Regular-Expressions.md |   6 +
 Challenge-Find-the-Length-of-a-String.md           |   6 +
 Challenge-Finding-a-Remainder-in-Javascript.md     |  21 +++
 ...ge-Generate-Random-Fractions-with-JavaScript.md |   2 +
 ...enerate-Random-Whole-Numbers-with-JavaScript.md |   5 +
 ...Generate-Random-Whole-Numbers-within-a-Range.md |  55 +++++++
 Challenge-Get-Geo-location-Data.md                 |  22 +++
 ...enge-Get-JSON-with-the-jQuery-getJSON-Method.md |  16 +++
 Challenge-Give-Each-Element-a-Unique-ID.md         |   2 +
 ...nge-Give-a-Background-Color-to-a-Div-Element.md |   3 +
 ...-JavaScript-Slot-Machine-some-stylish-images.md |   6 +
 Challenge-Global-Scope-And-Functions.md            |   5 +
 Challenge-Global-Vs-Local-Scope-In-Functions.md    |  15 ++
 Challenge-Headline-with-the-h2-Element.md          |   6 +
 ...-page-within-a-Bootstrap-Container-Fluid-Div.md |   8 ++
 Challenge-Import-a-Google-Font.md                  |   3 +
 Challenge-Increment-a-Number-with-Javascript.md    |  10 ++
 Challenge-Inform-with-the-Paragraph-Element.md     |   9 ++
 Challenge-Inherit-Styles-from-the-Body-Element.md  |  13 ++
 ...itializing-Variables-with-the-Equal-Operator.md |   7 +
 Challenge-Introducing-Else-If-Statements.md        |  13 ++
 Challenge-Introducing-Else-Statements.md           |  11 ++
 ...-Introducing-Javascript-Object-Notation-Json.md |  22 +++
 ...t-Regular-Expression-Matches-with-JavaScript.md |   4 +
 Challenge-Iterate-Odd-Numbers-With-a-For-Loop.md   |  16 +++
 ...nge-Iterate-Through-An-Array-With-A-For-Loop.md |  12 ++
 Challenge-Iterate-over-Arrays-with-map.md          |  10 ++
 Challenge-Iterate-with-JavaScript-For-Loops.md     |  23 +++
 Challenge-Iterate-with-JavaScript-While-Loops.md   |  11 ++
 Challenge-Join-Strings-with-.join.md               |   3 +
 Challenge-Label-Bootstrap-Buttons.md               |   2 +
 Challenge-Label-Bootstrap-Wells.md                 |   2 +
 ...earn-how-Script-Tags-and-Document-Ready-Work.md |  12 ++
 ...up-Form-Elements-Responsively-with-Bootstrap.md |   9 ++
 ...-Link-to-External-Pages-with-Anchor-Elements.md |   3 +
 Challenge-Local-Scope-And-Functions.md             |  16 +++
 ...ge-Make-Circular-Images-with-a-Border-Radius.md |  10 ++
 Challenge-Make-Dead-Links-using-the-Hash-Symbol.md |   3 +
 Challenge-Make-Images-Mobile-Responsive.md         |   2 +
 ...ances-of-Objects-with-a-Constructor-Function.md |  15 ++
 Challenge-Make-Object-Properties-Private.md        |  34 +++++
 ...cts-by-Passing-Parameters-to-our-Constructor.md |  30 ++++
 Challenge-Manipulate-Arrays-With-pop().md          |   6 +
 Challenge-Manipulate-Arrays-With-push().md         |   4 +
 Challenge-Manipulate-Arrays-With-shift().md        |   2 +
 Challenge-Manipulate-Arrays-With-unshift().md      |   2 +
 Challenge-Manipulate-JavaScript-Objects.md         |   8 ++
 Challenge-Modify-Array-Data-With-Indexes.md        |   9 ++
 ...tiple-Identical-Options-In-Switch-Statements.md |  17 +++
 Challenge-Multiply-Two-Numbers-with-JavaScript.md  |   4 +
 ...st-Many-Elements-within-a-Single-Div-Element.md |  23 +++
 ...ge-Nest-an-Anchor-Element-within-a-Paragraph.md |   1 +
 Challenge-Nest-one-Array-within-Another-Array.md   |   2 +
 Challenge-Nesting-For-Loops.md                     |  16 +++
 ...Override-All-Other-Styles-by-using-Important.md |   3 +
 ...-Class-Declarations-by-Styling-ID-Attributes.md |  19 +++
 ...erride-Class-Declarations-with-Inline-Styles.md |   1 +
 Challenge-Override-Styles-in-Subsequent-CSS.md     |   1 +
 ...e-Passing-Values-To-Functions-With-Arguments.md |  17 +++
 ...metic-Operations-on-Decimals-with-JavaScript.md |   4 +
 Challenge-Prefilter-JSON.md                        |  19 +++
 Challenge-Prioritize-One-Style-Over-Another.md     |  15 ++
 Challenge-Quoting-Strings-with-Single-Quotes.md    |   8 ++
 ...e-Remove-Classes-from-an-element-with-jQuery.md |   4 +
 Challenge-Remove-an-Element-Using-jQuery.md        |   2 +
 Challenge-Render-Images-from-Data-Sources.md       |   3 +
 Challenge-Replacing-If-Else-Chains-With-Switch.md  |  28 ++++
 Challenge-Responsively-Style-Checkboxes.md         |   4 +
 Challenge-Responsively-Style-Radio-Buttons.md      |  18 +++
 ...e-Return-A-Value-From-A-Function-With-Return.md |  16 +++
 Challenge-Return-Early-Pattern-For-Functions.md    |  16 +++
 ...enge-Returning-Boolean-Values-From-Functions.md |  23 +++
 Challenge-Reverse-Arrays-with-reverse.md           |   7 +
 ...ge-Save-your-Code-Revisions-Forever-with-Git.md |  15 ++
 Challenge-Say-Hello-to-HTML-Elements.md            |  11 ++
 ...ing-From-Many-Options-With-Switch-Statements.md |  22 +++
 Challenge-Set-the-Font-Family-of-an-Element.md     |  15 ++
 Challenge-Set-the-ID-of-an-Element.md              |   7 +
 ...e-Sift-through-Text-with-Regular-Expressions.md |  13 ++
 Challenge-Size-your-Images.md                      |   3 +
 Challenge-Sort-Arrays-with-sort.md                 |   8 ++
 Challenge-Specify-How-Fonts-Should-Degrade.md      |   3 +
 Challenge-Split-Strings-with-split.md              |   5 +
 Challenge-Split-your-Bootstrap-Row.md              |  12 ++
 ...lues-in-one-Variable-using-JavaScript-Arrays.md |   6 +
 ...lenge-Storing-Values-with-the-Equal-Operator.md |  12 ++
 ...nge-Style-Multiple-Elements-with-a-CSS-Class.md |  15 ++
 Challenge-Style-Text-Inputs-as-Form-Controls.md    |   4 +
 Challenge-Style-the-HTML-Body-Element.md           |   1 +
 ...ract-One-Number-from-Another-with-JavaScript.md |   4 +
 Challenge-Target-Elements-by-Class-Using-jQuery.md |   4 +
 Challenge-Target-Elements-by-ID-Using-jQuery.md    |   4 +
 ...e-Target-Even-Numbered-Elements-Using-jQuery.md |   6 +
 ...et-HTML-Elements-with-Selectors-Using-jQuery.md |  14 ++
 ...-a-Specific-Child-of-an-Element-Using-jQuery.md |   6 +
 ...rget-the-Children-of-an-Element-Using-jQuery.md |   6 +
 ...Target-the-Parent-of-an-Element-Using-jQuery.md |   8 ++
 ...-same-element-with-multiple-jQuery-Selectors.md |  15 ++
 ...nge-Taste-the-Bootstrap-Button-Color-Rainbow.md |   4 +
 Challenge-Testing-Objects-For-Properties.md        |  14 ++
 Challenge-Trigger-Click Events-with-jQuery.md      |  14 ++
 Challenge-Turn-an-Image-into-a-Link.md             |   1 +
 Challenge-Uncomment-HTML.md                        |   8 ++
 Challenge-Understand-Boolean-Values.md             |   2 +
 Challenge-Understand-String-Immutability.md        |  16 +++
 ...-Understanding-Case-Sensitivity-in-Variables.md |  15 ++
 Challenge-Understanding-Uninitialized-Variables.md |   4 +
 Challenge-Updating-Object-Properties.md            |  22 +++
 Challenge-Use-Abbreviated-Hex-Code.md              |  11 ++
 ...tion-to-Find-the-First-Character-in-a-String.md |   4 +
 ...ation-to-Find-the-Last-Character-in-a-String.md |   6 +
 ...tation-to-Find-the-Nth-Character-in-a-String.md |   6 +
 ...o-Find-the-Nth-to-Last-Character-in-a-String.md |   2 +
 Challenge-Use-CSS-Selectors-to-Style-Elements.md   |   7 +
 ...Notation-to-Specify-the-Margin-of-an-Element.md |  10 ++
 ...otation-to-Specify-the-Padding-of-an-Element.md |  10 ++
 Challenge-Use-Comments-to-Clarify-Code.md          |  29 ++++
 ...se-Conditional-Logic-with-If-Else-Statements.md |  19 +++
 Challenge-Use-HTML5-to-Require-a-Field.md          |  10 ++
 Challenge-Use-Hex-Code-for-Specific-Colors.md      |   3 +
 ...nge-Use-Hex-Code-for-Specific-Shades-of-Gray.md |   1 +
 Challenge-Use-Hex-Code-to-Color-Elements-Blue.md   |   9 ++
 Challenge-Use-Hex-Code-to-Color-Elements-Gray.md   |   1 +
 Challenge-Use-Hex-Code-to-Color-Elements-Green.md  |   9 ++
 Challenge-Use-Hex-Code-to-Color-Elements-Red.md    |   3 +
 Challenge-Use-Hex-Code-to-Color-Elements-White.md  |   1 +
 Challenge-Use-Hex-Code-to-Mix-Colors.md            |   9 ++
 Challenge-Use-RGB-to-Color-Elements-Blue.md        |   1 +
 Challenge-Use-RGB-to-Color-Elements-Gray.md        |   1 +
 Challenge-Use-RGB-to-Color-Elements-Green.md       |   1 +
 Challenge-Use-RGB-to-Color-Elements-Red.md         |   1 +
 Challenge-Use-RGB-to-Color-Elements-White.md       |   1 +
 Challenge-Use-RGB-to-Mix-Colors.md                 |   1 +
 Challenge-Use-RGB-values-to-Color-Elements.md      |   5 +
 ...nsive-Design-with-Bootstrap-Fluid-Containers.md |   6 +
 Challenge-Use-Spans-for-Inline-Elements.md         |   4 +
 Challenge-Use-a-CSS-Class-to-Style-an-Element.md   |   3 +
 ...enge-Use-an-ID-Attribute-to-Style-an-Element.md |   7 +
 ...ge-Use-appendTo-to-Move-Elements-with-jQuery.md |   4 +
 Challenge-Use-jQuery-to-Modify-the-Entire-Page.md  |   4 +
 ...-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md |  16 +++
 Challenge-Use-the-Javascript-Console.md            |   7 +
 Challenge-Using-Objects-For-Lookups.md             |  20 +++
 Challenge-Using-typeof.md                          |  13 ++
 Challenge-Warn-your-Users-of-a-Dangerous-Action.md |   4 +
 ...nge-Write-Reusable-JavaScript-with-Functions.md |  32 +++++
 ...op-Back-End-Project-locally-and-run-on-c9.io.md |   8 ++
 Develop-BaseJump-locally-and-run-on-c9.io.md       |   8 --
 Front-End-Project-Use-the-Twitchtv-JSON-API.md     |  19 +++
 Guide-to-Back-End-Projects-Table-of-Contents.md    |  31 ++++
 Guide-to-Basejumps-Table-of-Contents.md            |  31 ----
 ...o-Yeoman-Angular-Fullstack-Back-End-Projects.md |   9 ++
 Intro-to-Yeoman-Angular-Fullstack-Basejumps.md     |   9 --
 Test-issue-with-Bonfire-truncate-a-string.md       |  22 ---
 Vadodara.md                                        |   1 -
 Waypoint-Access-Array-Data-with-Indexes.md         |  12 --
 ...Access-Multi-Dimensional-Arrays-With-Indexes.md |  16 ---
 Waypoint-Accessing-Nested-Arrays-In-Json.md        |  22 ---
 Waypoint-Accessing-Nested-Objects-In-Json.md       |  22 ---
 ...ing-Objects-Properties-With-Bracket-Notation.md |  16 ---
 ...ing-Objects-Properties-With-The-Dot-Operator.md |  16 ---
 ...-Accessing-Objects-Properties-With-Variables.md |  15 --
 ...t-Add-Alt-Text-to-an-Image-for-Accessibility.md |   5 -
 Waypoint-Add-Borders-Around-your-Elements.md       |   3 -
 ...Different-Margins-to-Each-Side-of-an-Element.md |   1 -
 ...Different-Padding-to-Each-Side-of-an-Element.md |  11 --
 ...int-Add-Elements-within-your-Bootstrap-Wells.md |   2 -
 ...Add-Font-Awesome-Icons-to-all-of-our-Buttons.md |   4 -
 Waypoint-Add-Font-Awesome-Icons-to-our-Buttons.md  |   4 -
 ...oint-Add-ID-Attributes-to-Bootstrap-Elements.md |   4 -
 Waypoint-Add-Images-to-your-Website.md             |   3 -
 ...nt-Add-New-Properties-to-a-JavaScript-Object.md |   3 -
 Waypoint-Add-Placeholder-Text-to-a-Text-Field.md   |   3 -
 ...int-Add-Rounded-Corners-with-a-Border-Radius.md |  12 --
 Waypoint-Add-Two-Numbers-with-JavaScript.md        |   4 -
 Waypoint-Add-a-Negative-Margin-to-an-Element.md    |   1 -
 Waypoint-Add-a-Submit-Button-to-a-Form.md          |   8 --
 Waypoint-Add-your-JavaScript-Slot-Machine-Slots.md |  10 --
 ...Adding-A-Default-Option-In-Switch-Statements.md |  19 ---
 Waypoint-Adjust-the-Margin-of-an-Element.md        |   9 --
 Waypoint-Adjusting-the-Padding-of-an-Element.md    |   8 --
 Waypoint-Appending-Variables-to-Strings.md         |  10 --
 ...int-Apply-the-Default-Bootstrap-Button-Style.md |  23 ---
 Waypoint-Assignment-With-A-Returned-Value.md       |  11 --
 Waypoint-Assignment-with-Divided-by-Equals.md      |   8 --
 Waypoint-Assignment-with-Minus-Equals.md           |   8 --
 Waypoint-Assignment-with-Plus-Equals.md            |  11 --
 Waypoint-Assignment-with-Times-Equals.md           |  15 --
 ...t-Bring-your-JavaScript-Slot-Machine-to-Life.md |  10 --
 Waypoint-Build-JavaScript-Objects.md               |  15 --
 ...t-Call-out-Optional-Actions-with-Button-Info.md |   4 -
 Waypoint-Center-Text-with-Bootstrap.md             |   4 -
 Waypoint-Chaining-If-Else-Statements.md            |  16 ---
 ...t-Change-Text-Inside-an-Element-Using-jQuery.md |  10 --
 Waypoint-Change-Text-with-Click-Events.md          |   4 -
 ...nt-Change-the-CSS-of-an-Element-Using-jQuery.md |  13 --
 Waypoint-Change-the-Color-of-Text.md               |   3 -
 Waypoint-Change-the-Font-Size-of-an-Element.md     |   5 -
 ...heck-Radio-Buttons-and-Checkboxes-by-Default.md |   3 -
 ...eck-the-Length-Property-of-a-String-Variable.md |   4 -
 Waypoint-Clone-an-Element-Using-jQuery.md          |   4 -
 Waypoint-Comment-out-HTML.md                       |  15 --
 Waypoint-Comment-your-JavaScript-Code.md           |  10 --
 Waypoint-Comparison-With-The-Equality-Operator.md  |  28 ----
 ...ison-With-The-Greater-Than-Equal-To-Operator.md |  14 --
 ...nt-Comparison-With-The-Greater-Than-Operator.md |  14 --
 ...oint-Comparison-With-The-Inequality-Operator.md |  13 --
 ...parison-With-The-Less-Than-Equal-To-Operator.md |  13 --
 Waypoint-Comparison-With-The-Less-Than-Operator.md |  13 --
 ...Comparison-With-The-Strict-Equality-Operator.md |  12 --
 ...mparison-With-The-Strict-Inequality-Operator.md |  11 --
 ...nt-Comparisons-With-The-Logical-And-Operator.md |  23 ---
 ...int-Comparisons-With-The-Logical-Or-Operator.md |  24 ----
 Waypoint-Concatenate-Strings-with-.concat.md       |   3 -
 ...int-Concatenating-Strings-with-Plus-Operator.md |   8 --
 ...nating-Strings-with-the-Plus-Equals-Operator.md |  12 --
 Waypoint-Condense-arrays-with-reduce.md            |  13 --
 ...-Construct-JavaScript-Objects-with-Functions.md |  13 --
 Waypoint-Constructing-Strings-with-Variables.md    |   9 --
 Waypoint-Convert-JSON-Data-to-HTML.md              |  24 ----
 Waypoint-Count-Backwards-With-a-For-Loop.md        |  18 ---
 Waypoint-Create-Bootstrap-Wells.md                 |  26 ----
 Waypoint-Create-Decimal-Numbers-with-JavaScript.md |   2 -
 ...oint-Create-a-Block-Element-Bootstrap-Button.md |   4 -
 Waypoint-Create-a-Bootstrap-Button.md              |   4 -
 Waypoint-Create-a-Bootstrap-Headline.md            |   2 -
 Waypoint-Create-a-Bootstrap-Row.md                 |   2 -
 Waypoint-Create-a-Bulleted-Unordered-List.md       |  14 --
 ...eate-a-Class-to-Target-with-jQuery-Selectors.md |   4 -
 Waypoint-Create-a-Custom-Heading.md                |  12 --
 Waypoint-Create-a-Form-Element.md                  |   3 -
 Waypoint-Create-a-JavaScript-Slot-Machine.md       |   8 --
 Waypoint-Create-a-Set-of-Checkboxes.md             |   5 -
 Waypoint-Create-a-Set-of-Radio-Buttons.md          |   5 -
 Waypoint-Create-a-Text-Field.md                    |   3 -
 Waypoint-Create-an-Ordered-List.md                 |  14 --
 ...oint-Declare-JavaScript-Objects-as-Variables.md |  12 --
 Waypoint-Declare-JavaScript-Variables.md           |   4 -
 Waypoint-Declare-String-Variables.md               |   4 -
 Waypoint-Decrement-a-Number-with-Javascript.md     |  10 --
 Waypoint-Delete-HTML-Elements.md                   |   1 -
 ...t-Delete-Properties-from-a-JavaScript-Object.md |  26 ----
 Waypoint-Delete-your-jQuery-Functions.md           |   2 -
 Waypoint-Disable-an-Element-Using-jQuery.md        |   8 --
 Waypoint-Ditch-Custom-CSS-for-Bootstrap.md         |   4 -
 ...Divide-One-Number-by-Another-with-JavaScript.md |   2 -
 Waypoint-Escape-Sequences-in-Strings.md            |  15 --
 Waypoint-Escaping-Literal-Quotes-in-Strings.md     |   8 --
 ...oint-Fill-in-the-Blank-with-Placeholder-Text.md |  11 --
 Waypoint-Filter-Arrays-with-filter.md              |   9 --
 Waypoint-Find-Numbers-with-Regular-Expressions.md  |   6 -
 ...nt-Find-White-Space-with-Regular-Expressions.md |   6 -
 Waypoint-Find-the-Length-of-a-String.md            |   6 -
 Waypoint-Finding-a-Remainder-in-Javascript.md      |  21 ---
 ...nt-Generate-Random-Fractions-with-JavaScript.md |   2 -
 ...enerate-Random-Whole-Numbers-with-JavaScript.md |   5 -
 ...Generate-Random-Whole-Numbers-within-a-Range.md |  55 -------
 Waypoint-Get-Geo-location-Data.md                  |  22 ---
 ...oint-Get-JSON-with-the-jQuery-getJSON-Method.md |  16 ---
 Waypoint-Give-Each-Element-a-Unique-ID.md          |   2 -
 ...int-Give-a-Background-Color-to-a-Div-Element.md |   3 -
 ...-JavaScript-Slot-Machine-some-stylish-images.md |   6 -
 Waypoint-Global-Scope-And-Functions.md             |   5 -
 Waypoint-Global-Vs-Local-Scope-In-Functions.md     |  15 --
 Waypoint-Headline-with-the-h2-Element.md           |   6 -
 ...-page-within-a-Bootstrap-Container-Fluid-Div.md |   8 --
 Waypoint-Import-a-Google-Font.md                   |   3 -
 Waypoint-Increment-a-Number-with-Javascript.md     |  10 --
 Waypoint-Inform-with-the-Paragraph-Element.md      |   9 --
 Waypoint-Inherit-Styles-from-the-Body-Element.md   |  13 --
 ...itializing-Variables-with-the-Equal-Operator.md |   7 -
 Waypoint-Introducing-Else-If-Statements.md         |  13 --
 Waypoint-Introducing-Else-Statements.md            |  11 --
 ...-Introducing-Javascript-Object-Notation-Json.md |  22 ---
 ...t-Regular-Expression-Matches-with-JavaScript.md |   4 -
 Waypoint-Iterate-Odd-Numbers-With-a-For-Loop.md    |  16 ---
 ...int-Iterate-Through-An-Array-With-A-For-Loop.md |  12 --
 Waypoint-Iterate-over-Arrays-with-map.md           |  10 --
 Waypoint-Iterate-with-JavaScript-For-Loops.md      |  23 ---
 Waypoint-Iterate-with-JavaScript-While-Loops.md    |  11 --
 Waypoint-Join-Strings-with-.join.md                |   3 -
 Waypoint-Label-Bootstrap-Buttons.md                |   2 -
 Waypoint-Label-Bootstrap-Wells.md                  |   2 -
 ...earn-how-Script-Tags-and-Document-Ready-Work.md |  12 --
 ...up-Form-Elements-Responsively-with-Bootstrap.md |   9 --
 ...-Link-to-External-Pages-with-Anchor-Elements.md |   3 -
 Waypoint-Local-Scope-And-Functions.md              |  16 ---
 ...nt-Make-Circular-Images-with-a-Border-Radius.md |  10 --
 Waypoint-Make-Dead-Links-using-the-Hash-Symbol.md  |   3 -
 Waypoint-Make-Images-Mobile-Responsive.md          |   2 -
 ...ances-of-Objects-with-a-Constructor-Function.md |  15 --
 Waypoint-Make-Object-Properties-Private.md         |  34 -----
 ...cts-by-Passing-Parameters-to-our-Constructor.md |  30 ----
 Waypoint-Manipulate-Arrays-With-pop().md           |   6 -
 Waypoint-Manipulate-Arrays-With-push().md          |   4 -
 Waypoint-Manipulate-Arrays-With-shift().md         |   2 -
 Waypoint-Manipulate-Arrays-With-unshift().md       |   2 -
 Waypoint-Manipulate-JavaScript-Objects.md          |   8 --
 Waypoint-Modify-Array-Data-With-Indexes.md         |   9 --
 ...tiple-Identical-Options-In-Switch-Statements.md |  17 ---
 Waypoint-Multiply-Two-Numbers-with-JavaScript.md   |   4 -
 ...st-Many-Elements-within-a-Single-Div-Element.md |  23 ---
 ...nt-Nest-an-Anchor-Element-within-a-Paragraph.md |   1 -
 Waypoint-Nest-one-Array-within-Another-Array.md    |   2 -
 Waypoint-Nesting-For-Loops.md                      |  16 ---
 ...Override-All-Other-Styles-by-using-Important.md |   3 -
 ...-Class-Declarations-by-Styling-ID-Attributes.md |  19 ---
 ...erride-Class-Declarations-with-Inline-Styles.md |   1 -
 Waypoint-Override-Styles-in-Subsequent-CSS.md      |   1 -
 ...t-Passing-Values-To-Functions-With-Arguments.md |  17 ---
 ...metic-Operations-on-Decimals-with-JavaScript.md |   4 -
 Waypoint-Prefilter-JSON.md                         |  19 ---
 Waypoint-Prioritize-One-Style-Over-Another.md      |  15 --
 Waypoint-Quoting-Strings-with-Single-Quotes.md     |   8 --
 ...t-Remove-Classes-from-an-element-with-jQuery.md |   4 -
 Waypoint-Remove-an-Element-Using-jQuery.md         |   2 -
 Waypoint-Render-Images-from-Data-Sources.md        |   3 -
 Waypoint-Replacing-If-Else-Chains-With-Switch.md   |  28 ----
 Waypoint-Responsively-Style-Checkboxes.md          |   4 -
 Waypoint-Responsively-Style-Radio-Buttons.md       |  18 ---
 ...t-Return-A-Value-From-A-Function-With-Return.md |  16 ---
 Waypoint-Return-Early-Pattern-For-Functions.md     |  16 ---
 ...oint-Returning-Boolean-Values-From-Functions.md |  23 ---
 Waypoint-Reverse-Arrays-with-reverse.md            |   7 -
 ...nt-Save-your-Code-Revisions-Forever-with-Git.md |  15 --
 Waypoint-Say-Hello-to-HTML-Elements.md             |  11 --
 ...ing-From-Many-Options-With-Switch-Statements.md |  22 ---
 Waypoint-Set-the-Font-Family-of-an-Element.md      |  15 --
 Waypoint-Set-the-ID-of-an-Element.md               |   7 -
 ...t-Sift-through-Text-with-Regular-Expressions.md |  13 --
 Waypoint-Size-your-Images.md                       |   3 -
 Waypoint-Sort-Arrays-with-sort.md                  |   8 --
 Waypoint-Specify-How-Fonts-Should-Degrade.md       |   3 -
 Waypoint-Split-Strings-with-split.md               |   5 -
 Waypoint-Split-your-Bootstrap-Row.md               |  12 --
 ...lues-in-one-Variable-using-JavaScript-Arrays.md |   6 -
 Waypoint-Storing-Values-with-the-Equal-Operator.md |  12 --
 ...int-Style-Multiple-Elements-with-a-CSS-Class.md |  15 --
 Waypoint-Style-Text-Inputs-as-Form-Controls.md     |   4 -
 Waypoint-Style-the-HTML-Body-Element.md            |   1 -
 ...ract-One-Number-from-Another-with-JavaScript.md |   4 -
 Waypoint-Target-Elements-by-Class-Using-jQuery.md  |   4 -
 Waypoint-Target-Elements-by-ID-Using-jQuery.md     |   4 -
 ...t-Target-Even-Numbered-Elements-Using-jQuery.md |   6 -
 ...et-HTML-Elements-with-Selectors-Using-jQuery.md |  14 --
 ...-a-Specific-Child-of-an-Element-Using-jQuery.md |   6 -
 ...rget-the-Children-of-an-Element-Using-jQuery.md |   6 -
 ...Target-the-Parent-of-an-Element-Using-jQuery.md |   8 --
 ...-same-element-with-multiple-jQuery-Selectors.md |  15 --
 ...int-Taste-the-Bootstrap-Button-Color-Rainbow.md |   4 -
 Waypoint-Testing-Objects-For-Properties.md         |  14 --
 Waypoint-Trigger-Click Events-with-jQuery.md       |  14 --
 Waypoint-Turn-an-Image-into-a-Link.md              |   1 -
 Waypoint-Uncomment-HTML.md                         |   8 --
 Waypoint-Understand-Boolean-Values.md              |   2 -
 Waypoint-Understand-String-Immutability.md         |  16 ---
 ...-Understanding-Case-Sensitivity-in-Variables.md |  15 --
 Waypoint-Understanding-Uninitialized-Variables.md  |   4 -
 Waypoint-Updating-Object-Properties.md             |  22 ---
 Waypoint-Use-Abbreviated-Hex-Code.md               |  11 --
 ...tion-to-Find-the-First-Character-in-a-String.md |   4 -
 ...ation-to-Find-the-Last-Character-in-a-String.md |   6 -
 ...tation-to-Find-the-Nth-Character-in-a-String.md |   6 -
 ...o-Find-the-Nth-to-Last-Character-in-a-String.md |   2 -
 Waypoint-Use-CSS-Selectors-to-Style-Elements.md    |   7 -
 ...Notation-to-Specify-the-Margin-of-an-Element.md |  10 --
 ...otation-to-Specify-the-Padding-of-an-Element.md |  10 --
 Waypoint-Use-Comments-to-Clarify-Code.md           |  29 ----
 ...se-Conditional-Logic-with-If-Else-Statements.md |  19 ---
 Waypoint-Use-HTML5-to-Require-a-Field.md           |  10 --
 Waypoint-Use-Hex-Code-for-Specific-Colors.md       |   3 -
 ...int-Use-Hex-Code-for-Specific-Shades-of-Gray.md |   1 -
 Waypoint-Use-Hex-Code-to-Color-Elements-Blue.md    |   9 --
 Waypoint-Use-Hex-Code-to-Color-Elements-Gray.md    |   1 -
 Waypoint-Use-Hex-Code-to-Color-Elements-Green.md   |   9 --
 Waypoint-Use-Hex-Code-to-Color-Elements-Red.md     |   3 -
 Waypoint-Use-Hex-Code-to-Color-Elements-White.md   |   1 -
 Waypoint-Use-Hex-Code-to-Mix-Colors.md             |   9 --
 Waypoint-Use-RGB-to-Color-Elements-Blue.md         |   1 -
 Waypoint-Use-RGB-to-Color-Elements-Gray.md         |   1 -
 Waypoint-Use-RGB-to-Color-Elements-Green.md        |   1 -
 Waypoint-Use-RGB-to-Color-Elements-Red.md          |   1 -
 Waypoint-Use-RGB-to-Color-Elements-White.md        |   1 -
 Waypoint-Use-RGB-to-Mix-Colors.md                  |   1 -
 Waypoint-Use-RGB-values-to-Color-Elements.md       |   5 -
 ...nsive-Design-with-Bootstrap-Fluid-Containers.md |   6 -
 Waypoint-Use-Spans-for-Inline-Elements.md          |   4 -
 Waypoint-Use-a-CSS-Class-to-Style-an-Element.md    |   3 -
 ...oint-Use-an-ID-Attribute-to-Style-an-Element.md |   7 -
 ...nt-Use-appendTo-to-Move-Elements-with-jQuery.md |   4 -
 Waypoint-Use-jQuery-to-Modify-the-Entire-Page.md   |   4 -
 ...-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md |  16 ---
 Waypoint-Use-the-Javascript-Console.md             |   7 -
 Waypoint-Using-Objects-For-Lookups.md              |  20 ---
 Waypoint-Using-typeof.md                           |  13 --
 Waypoint-Warn-your-Users-of-a-Dangerous-Action.md  |   4 -
 ...int-Write-Reusable-JavaScript-with-Functions.md |  32 -----
 What-the-style-guide-for-Algorithms-is.md          |  15 ++
 What-the-style-guide-for-Bonfires-is.md            |  15 --
 Zipline-Use-the-Twitchtv-JSON-API.md               |  19 ---
 botideas.md                                        |   6 -
 botpreso.md                                        |   9 --
 good-code.md                                       |  30 ----
 npm-debug.log                                      |  85 +++++++++++
 rename-wiki.bat                                    | 105 ++++++++++++++
 triphop.md                                         |   3 -
 video.md                                           |   4 -
 603 files changed, 6707 insertions(+), 6592 deletions(-)
 create mode 100644 Algorithm-Arguments-Optional.md
 create mode 100644 Algorithm-Binary-Agents.md
 create mode 100644 Algorithm-Boo-who.md
 create mode 100644 Algorithm-Caesars-Cipher.md
 create mode 100644 Algorithm-Check-for-Palindromes.md
 create mode 100644 Algorithm-Chunky-Monkey.md
 create mode 100644 Algorithm-Confirm-the-Ending.md
 create mode 100644 Algorithm-Convert-HTML-Entities.md
 create mode 100644 Algorithm-DNA-Pairing.md
 create mode 100644 Algorithm-Diff-Two-Arrays.md
 create mode 100644 Algorithm-Drop-it.md
 create mode 100644 Algorithm-Everything-be-True.md
 create mode 100644 Algorithm-Exact-Change.md
 create mode 100644 Algorithm-Factorialize-a-Number.md
 create mode 100644 Algorithm-Falsy-Bouncer.md
 create mode 100644 Algorithm-Find-The-Longest-Word-in-a-String.md
 create mode 100644 Algorithm-Finders-Keepers.md
 create mode 100644 Algorithm-Friendly-Date-Ranges.md
 create mode 100644 Algorithm-Inventory-Update.md
 create mode 100644 Algorithm-Make-a-Person.md
 create mode 100644 Algorithm-Map-the-Debris.md
 create mode 100644 Algorithm-Meet-Algorithm.md
 create mode 100644 Algorithm-Missing-letters.md
 create mode 100644 Algorithm-Mutations.md
 create mode 100644 Algorithm-No-Repeats-Please.md
 create mode 100644 Algorithm-Pairwise.md
 create mode 100644 Algorithm-Pig-Latin.md
 create mode 100644 Algorithm-Repeat-a-String-Repeat-a-String.md
 create mode 100644 Algorithm-Return-Largest-Numbers-in-Arrays.md
 create mode 100644 Algorithm-Reverse-a-String.md
 create mode 100644 Algorithm-Roman-Numeral-Converter.md
 create mode 100644 Algorithm-Search-and-Replace.md
 create mode 100644 Algorithm-Seek-and-Destroy.md
 create mode 100644 Algorithm-Slasher-Flick.md
 create mode 100644 Algorithm-Smallest-Common-Multiple.md
 create mode 100644 Algorithm-Sorted-Union.md
 create mode 100644 Algorithm-Spinal-Tap-Case.md
 create mode 100644 Algorithm-Steamroller.md
 create mode 100644 Algorithm-Style-Guide.md
 create mode 100644 Algorithm-Sum-All-Numbers-in-a-Range.md
 create mode 100644 Algorithm-Sum-All-Odd-Fibonacci-Numbers.md
 create mode 100644 Algorithm-Sum-All-Primes.md
 create mode 100644 Algorithm-Symmetric-Difference.md
 create mode 100644 Algorithm-Title-Case-a-Sentence.md
 create mode 100644 Algorithm-Truncate-a-String.md
 create mode 100644 Algorithm-Validate-US-Telephone-Numbers.md
 create mode 100644 Algorithm-Where-art-thou.md
 create mode 100644 Algorithm-Where-do-I-belong.md
 create mode 100644 Algorithm-Wiki-Template.md
 create mode 100644 Back-End-Project-Resources.md
 delete mode 100644 Basejump-Resources.md
 delete mode 100644 Bonfire-Arguments-Optional.md
 delete mode 100644 Bonfire-Binary-Agents.md
 delete mode 100644 Bonfire-Boo-who.md
 delete mode 100644 Bonfire-Caesars-Cipher.md
 delete mode 100644 Bonfire-Check-for-Palindromes.md
 delete mode 100644 Bonfire-Chunky-Monkey.md
 delete mode 100644 Bonfire-Confirm-the-Ending.md
 delete mode 100644 Bonfire-Convert-HTML-Entities.md
 delete mode 100644 Bonfire-DNA-Pairing.md
 delete mode 100644 Bonfire-Diff-Two-Arrays.md
 delete mode 100644 Bonfire-Drop-it.md
 delete mode 100644 Bonfire-Everything-be-True.md
 delete mode 100644 Bonfire-Exact-Change.md
 delete mode 100644 Bonfire-Factorialize-a-Number.md
 delete mode 100644 Bonfire-Falsy-Bouncer.md
 delete mode 100644 Bonfire-Find-The-Longest-Word-in-a-String.md
 delete mode 100644 Bonfire-Finders-Keepers.md
 delete mode 100644 Bonfire-Friendly-Date-Ranges.md
 delete mode 100644 Bonfire-Inventory-Update.md
 delete mode 100644 Bonfire-Make-a-Person.md
 delete mode 100644 Bonfire-Map-the-Debris.md
 delete mode 100644 Bonfire-Meet-Bonfire.md
 delete mode 100644 Bonfire-Missing-letters.md
 delete mode 100644 Bonfire-Mutations.md
 delete mode 100644 Bonfire-No-Repeats-Please.md
 delete mode 100644 Bonfire-Pairwise.md
 delete mode 100644 Bonfire-Pig-Latin.md
 delete mode 100644 Bonfire-Repeat-a-String-Repeat-a-String.md
 delete mode 100644 Bonfire-Return-Largest-Numbers-in-Arrays.md
 delete mode 100644 Bonfire-Reverse-a-String.md
 delete mode 100644 Bonfire-Roman-Numeral-Converter.md
 delete mode 100644 Bonfire-Search-and-Replace.md
 delete mode 100644 Bonfire-Seek-and-Destroy.md
 delete mode 100644 Bonfire-Slasher-Flick.md
 delete mode 100644 Bonfire-Smallest-Common-Multiple.md
 delete mode 100644 Bonfire-Sorted-Union.md
 delete mode 100644 Bonfire-Spinal-Tap-Case.md
 delete mode 100644 Bonfire-Steamroller.md
 delete mode 100644 Bonfire-Style-Guide.md
 delete mode 100644 Bonfire-Sum-All-Numbers-in-a-Range.md
 delete mode 100644 Bonfire-Sum-All-Odd-Fibonacci-Numbers.md
 delete mode 100644 Bonfire-Sum-All-Primes.md
 delete mode 100644 Bonfire-Symmetric-Difference.md
 delete mode 100644 Bonfire-Title-Case-a-Sentence.md
 delete mode 100644 Bonfire-Truncate-a-String.md
 delete mode 100644 Bonfire-Validate-US-Telephone-Numbers.md
 delete mode 100644 Bonfire-Where-art-thou.md
 delete mode 100644 Bonfire-Where-do-I-belong.md
 delete mode 100644 Bonfire-Wiki-Template.md
 create mode 100644 Challenge-Access-Array-Data-with-Indexes.md
 create mode 100644 Challenge-Access-Multi-Dimensional-Arrays-With-Indexes.md
 create mode 100644 Challenge-Accessing-Nested-Arrays-In-Json.md
 create mode 100644 Challenge-Accessing-Nested-Objects-In-Json.md
 create mode 100644 Challenge-Accessing-Objects-Properties-With-Bracket-Notation.md
 create mode 100644 Challenge-Accessing-Objects-Properties-With-The-Dot-Operator.md
 create mode 100644 Challenge-Accessing-Objects-Properties-With-Variables.md
 create mode 100644 Challenge-Add-Alt-Text-to-an-Image-for-Accessibility.md
 create mode 100644 Challenge-Add-Borders-Around-your-Elements.md
 create mode 100644 Challenge-Add-Different-Margins-to-Each-Side-of-an-Element.md
 create mode 100644 Challenge-Add-Different-Padding-to-Each-Side-of-an-Element.md
 create mode 100644 Challenge-Add-Elements-within-your-Bootstrap-Wells.md
 create mode 100644 Challenge-Add-Font-Awesome-Icons-to-all-of-our-Buttons.md
 create mode 100644 Challenge-Add-Font-Awesome-Icons-to-our-Buttons.md
 create mode 100644 Challenge-Add-ID-Attributes-to-Bootstrap-Elements.md
 create mode 100644 Challenge-Add-Images-to-your-Website.md
 create mode 100644 Challenge-Add-New-Properties-to-a-JavaScript-Object.md
 create mode 100644 Challenge-Add-Placeholder-Text-to-a-Text-Field.md
 create mode 100644 Challenge-Add-Rounded-Corners-with-a-Border-Radius.md
 create mode 100644 Challenge-Add-Two-Numbers-with-JavaScript.md
 create mode 100644 Challenge-Add-a-Negative-Margin-to-an-Element.md
 create mode 100644 Challenge-Add-a-Submit-Button-to-a-Form.md
 create mode 100644 Challenge-Add-your-JavaScript-Slot-Machine-Slots.md
 create mode 100644 Challenge-Adding-A-Default-Option-In-Switch-Statements.md
 create mode 100644 Challenge-Adjust-the-Margin-of-an-Element.md
 create mode 100644 Challenge-Adjusting-the-Padding-of-an-Element.md
 create mode 100644 Challenge-Appending-Variables-to-Strings.md
 create mode 100644 Challenge-Apply-the-Default-Bootstrap-Button-Style.md
 create mode 100644 Challenge-Assignment-With-A-Returned-Value.md
 create mode 100644 Challenge-Assignment-with-Divided-by-Equals.md
 create mode 100644 Challenge-Assignment-with-Minus-Equals.md
 create mode 100644 Challenge-Assignment-with-Plus-Equals.md
 create mode 100644 Challenge-Assignment-with-Times-Equals.md
 create mode 100644 Challenge-Bring-your-JavaScript-Slot-Machine-to-Life.md
 create mode 100644 Challenge-Build-JavaScript-Objects.md
 create mode 100644 Challenge-Call-out-Optional-Actions-with-Button-Info.md
 create mode 100644 Challenge-Center-Text-with-Bootstrap.md
 create mode 100644 Challenge-Chaining-If-Else-Statements.md
 create mode 100644 Challenge-Change-Text-Inside-an-Element-Using-jQuery.md
 create mode 100644 Challenge-Change-Text-with-Click-Events.md
 create mode 100644 Challenge-Change-the-CSS-of-an-Element-Using-jQuery.md
 create mode 100644 Challenge-Change-the-Color-of-Text.md
 create mode 100644 Challenge-Change-the-Font-Size-of-an-Element.md
 create mode 100644 Challenge-Check-Radio-Buttons-and-Checkboxes-by-Default.md
 create mode 100644 Challenge-Check-the-Length-Property-of-a-String-Variable.md
 create mode 100644 Challenge-Clone-an-Element-Using-jQuery.md
 create mode 100644 Challenge-Comment-out-HTML.md
 create mode 100644 Challenge-Comment-your-JavaScript-Code.md
 create mode 100644 Challenge-Comparison-With-The-Equality-Operator.md
 create mode 100644 Challenge-Comparison-With-The-Greater-Than-Equal-To-Operator.md
 create mode 100644 Challenge-Comparison-With-The-Greater-Than-Operator.md
 create mode 100644 Challenge-Comparison-With-The-Inequality-Operator.md
 create mode 100644 Challenge-Comparison-With-The-Less-Than-Equal-To-Operator.md
 create mode 100644 Challenge-Comparison-With-The-Less-Than-Operator.md
 create mode 100644 Challenge-Comparison-With-The-Strict-Equality-Operator.md
 create mode 100644 Challenge-Comparison-With-The-Strict-Inequality-Operator.md
 create mode 100644 Challenge-Comparisons-With-The-Logical-And-Operator.md
 create mode 100644 Challenge-Comparisons-With-The-Logical-Or-Operator.md
 create mode 100644 Challenge-Concatenate-Strings-with-.concat.md
 create mode 100644 Challenge-Concatenating-Strings-with-Plus-Operator.md
 create mode 100644 Challenge-Concatenating-Strings-with-the-Plus-Equals-Operator.md
 create mode 100644 Challenge-Condense-arrays-with-reduce.md
 create mode 100644 Challenge-Construct-JavaScript-Objects-with-Functions.md
 create mode 100644 Challenge-Constructing-Strings-with-Variables.md
 create mode 100644 Challenge-Convert-JSON-Data-to-HTML.md
 create mode 100644 Challenge-Count-Backwards-With-a-For-Loop.md
 create mode 100644 Challenge-Create-Bootstrap-Wells.md
 create mode 100644 Challenge-Create-Decimal-Numbers-with-JavaScript.md
 create mode 100644 Challenge-Create-a-Block-Element-Bootstrap-Button.md
 create mode 100644 Challenge-Create-a-Bootstrap-Button.md
 create mode 100644 Challenge-Create-a-Bootstrap-Headline.md
 create mode 100644 Challenge-Create-a-Bootstrap-Row.md
 create mode 100644 Challenge-Create-a-Bulleted-Unordered-List.md
 create mode 100644 Challenge-Create-a-Class-to-Target-with-jQuery-Selectors.md
 create mode 100644 Challenge-Create-a-Custom-Heading.md
 create mode 100644 Challenge-Create-a-Form-Element.md
 create mode 100644 Challenge-Create-a-JavaScript-Slot-Machine.md
 create mode 100644 Challenge-Create-a-Set-of-Checkboxes.md
 create mode 100644 Challenge-Create-a-Set-of-Radio-Buttons.md
 create mode 100644 Challenge-Create-a-Text-Field.md
 create mode 100644 Challenge-Create-an-Ordered-List.md
 create mode 100644 Challenge-Declare-JavaScript-Objects-as-Variables.md
 create mode 100644 Challenge-Declare-JavaScript-Variables.md
 create mode 100644 Challenge-Declare-String-Variables.md
 create mode 100644 Challenge-Decrement-a-Number-with-Javascript.md
 create mode 100644 Challenge-Delete-HTML-Elements.md
 create mode 100644 Challenge-Delete-Properties-from-a-JavaScript-Object.md
 create mode 100644 Challenge-Delete-your-jQuery-Functions.md
 create mode 100644 Challenge-Disable-an-Element-Using-jQuery.md
 create mode 100644 Challenge-Ditch-Custom-CSS-for-Bootstrap.md
 create mode 100644 Challenge-Divide-One-Number-by-Another-with-JavaScript.md
 create mode 100644 Challenge-Escape-Sequences-in-Strings.md
 create mode 100644 Challenge-Escaping-Literal-Quotes-in-Strings.md
 create mode 100644 Challenge-Fill-in-the-Blank-with-Placeholder-Text.md
 create mode 100644 Challenge-Filter-Arrays-with-filter.md
 create mode 100644 Challenge-Find-Numbers-with-Regular-Expressions.md
 create mode 100644 Challenge-Find-White-Space-with-Regular-Expressions.md
 create mode 100644 Challenge-Find-the-Length-of-a-String.md
 create mode 100644 Challenge-Finding-a-Remainder-in-Javascript.md
 create mode 100644 Challenge-Generate-Random-Fractions-with-JavaScript.md
 create mode 100644 Challenge-Generate-Random-Whole-Numbers-with-JavaScript.md
 create mode 100644 Challenge-Generate-Random-Whole-Numbers-within-a-Range.md
 create mode 100644 Challenge-Get-Geo-location-Data.md
 create mode 100644 Challenge-Get-JSON-with-the-jQuery-getJSON-Method.md
 create mode 100644 Challenge-Give-Each-Element-a-Unique-ID.md
 create mode 100644 Challenge-Give-a-Background-Color-to-a-Div-Element.md
 create mode 100644 Challenge-Give-your-JavaScript-Slot-Machine-some-stylish-images.md
 create mode 100644 Challenge-Global-Scope-And-Functions.md
 create mode 100644 Challenge-Global-Vs-Local-Scope-In-Functions.md
 create mode 100644 Challenge-Headline-with-the-h2-Element.md
 create mode 100644 Challenge-House-our-page-within-a-Bootstrap-Container-Fluid-Div.md
 create mode 100644 Challenge-Import-a-Google-Font.md
 create mode 100644 Challenge-Increment-a-Number-with-Javascript.md
 create mode 100644 Challenge-Inform-with-the-Paragraph-Element.md
 create mode 100644 Challenge-Inherit-Styles-from-the-Body-Element.md
 create mode 100644 Challenge-Initializing-Variables-with-the-Equal-Operator.md
 create mode 100644 Challenge-Introducing-Else-If-Statements.md
 create mode 100644 Challenge-Introducing-Else-Statements.md
 create mode 100644 Challenge-Introducing-Javascript-Object-Notation-Json.md
 create mode 100644 Challenge-Invert-Regular-Expression-Matches-with-JavaScript.md
 create mode 100644 Challenge-Iterate-Odd-Numbers-With-a-For-Loop.md
 create mode 100644 Challenge-Iterate-Through-An-Array-With-A-For-Loop.md
 create mode 100644 Challenge-Iterate-over-Arrays-with-map.md
 create mode 100644 Challenge-Iterate-with-JavaScript-For-Loops.md
 create mode 100644 Challenge-Iterate-with-JavaScript-While-Loops.md
 create mode 100644 Challenge-Join-Strings-with-.join.md
 create mode 100644 Challenge-Label-Bootstrap-Buttons.md
 create mode 100644 Challenge-Label-Bootstrap-Wells.md
 create mode 100644 Challenge-Learn-how-Script-Tags-and-Document-Ready-Work.md
 create mode 100644 Challenge-Line-up-Form-Elements-Responsively-with-Bootstrap.md
 create mode 100644 Challenge-Link-to-External-Pages-with-Anchor-Elements.md
 create mode 100644 Challenge-Local-Scope-And-Functions.md
 create mode 100644 Challenge-Make-Circular-Images-with-a-Border-Radius.md
 create mode 100644 Challenge-Make-Dead-Links-using-the-Hash-Symbol.md
 create mode 100644 Challenge-Make-Images-Mobile-Responsive.md
 create mode 100644 Challenge-Make-Instances-of-Objects-with-a-Constructor-Function.md
 create mode 100644 Challenge-Make-Object-Properties-Private.md
 create mode 100644 Challenge-Make-Unique-Objects-by-Passing-Parameters-to-our-Constructor.md
 create mode 100644 Challenge-Manipulate-Arrays-With-pop().md
 create mode 100644 Challenge-Manipulate-Arrays-With-push().md
 create mode 100644 Challenge-Manipulate-Arrays-With-shift().md
 create mode 100644 Challenge-Manipulate-Arrays-With-unshift().md
 create mode 100644 Challenge-Manipulate-JavaScript-Objects.md
 create mode 100644 Challenge-Modify-Array-Data-With-Indexes.md
 create mode 100644 Challenge-Multiple-Identical-Options-In-Switch-Statements.md
 create mode 100644 Challenge-Multiply-Two-Numbers-with-JavaScript.md
 create mode 100644 Challenge-Nest-Many-Elements-within-a-Single-Div-Element.md
 create mode 100644 Challenge-Nest-an-Anchor-Element-within-a-Paragraph.md
 create mode 100644 Challenge-Nest-one-Array-within-Another-Array.md
 create mode 100644 Challenge-Nesting-For-Loops.md
 create mode 100644 Challenge-Override-All-Other-Styles-by-using-Important.md
 create mode 100644 Challenge-Override-Class-Declarations-by-Styling-ID-Attributes.md
 create mode 100644 Challenge-Override-Class-Declarations-with-Inline-Styles.md
 create mode 100644 Challenge-Override-Styles-in-Subsequent-CSS.md
 create mode 100644 Challenge-Passing-Values-To-Functions-With-Arguments.md
 create mode 100644 Challenge-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md
 create mode 100644 Challenge-Prefilter-JSON.md
 create mode 100644 Challenge-Prioritize-One-Style-Over-Another.md
 create mode 100644 Challenge-Quoting-Strings-with-Single-Quotes.md
 create mode 100644 Challenge-Remove-Classes-from-an-element-with-jQuery.md
 create mode 100644 Challenge-Remove-an-Element-Using-jQuery.md
 create mode 100644 Challenge-Render-Images-from-Data-Sources.md
 create mode 100644 Challenge-Replacing-If-Else-Chains-With-Switch.md
 create mode 100644 Challenge-Responsively-Style-Checkboxes.md
 create mode 100644 Challenge-Responsively-Style-Radio-Buttons.md
 create mode 100644 Challenge-Return-A-Value-From-A-Function-With-Return.md
 create mode 100644 Challenge-Return-Early-Pattern-For-Functions.md
 create mode 100644 Challenge-Returning-Boolean-Values-From-Functions.md
 create mode 100644 Challenge-Reverse-Arrays-with-reverse.md
 create mode 100644 Challenge-Save-your-Code-Revisions-Forever-with-Git.md
 create mode 100644 Challenge-Say-Hello-to-HTML-Elements.md
 create mode 100644 Challenge-Selecting-From-Many-Options-With-Switch-Statements.md
 create mode 100644 Challenge-Set-the-Font-Family-of-an-Element.md
 create mode 100644 Challenge-Set-the-ID-of-an-Element.md
 create mode 100644 Challenge-Sift-through-Text-with-Regular-Expressions.md
 create mode 100644 Challenge-Size-your-Images.md
 create mode 100644 Challenge-Sort-Arrays-with-sort.md
 create mode 100644 Challenge-Specify-How-Fonts-Should-Degrade.md
 create mode 100644 Challenge-Split-Strings-with-split.md
 create mode 100644 Challenge-Split-your-Bootstrap-Row.md
 create mode 100644 Challenge-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md
 create mode 100644 Challenge-Storing-Values-with-the-Equal-Operator.md
 create mode 100644 Challenge-Style-Multiple-Elements-with-a-CSS-Class.md
 create mode 100644 Challenge-Style-Text-Inputs-as-Form-Controls.md
 create mode 100644 Challenge-Style-the-HTML-Body-Element.md
 create mode 100644 Challenge-Subtract-One-Number-from-Another-with-JavaScript.md
 create mode 100644 Challenge-Target-Elements-by-Class-Using-jQuery.md
 create mode 100644 Challenge-Target-Elements-by-ID-Using-jQuery.md
 create mode 100644 Challenge-Target-Even-Numbered-Elements-Using-jQuery.md
 create mode 100644 Challenge-Target-HTML-Elements-with-Selectors-Using-jQuery.md
 create mode 100644 Challenge-Target-a-Specific-Child-of-an-Element-Using-jQuery.md
 create mode 100644 Challenge-Target-the-Children-of-an-Element-Using-jQuery.md
 create mode 100644 Challenge-Target-the-Parent-of-an-Element-Using-jQuery.md
 create mode 100644 Challenge-Target-the-same-element-with-multiple-jQuery-Selectors.md
 create mode 100644 Challenge-Taste-the-Bootstrap-Button-Color-Rainbow.md
 create mode 100644 Challenge-Testing-Objects-For-Properties.md
 create mode 100644 Challenge-Trigger-Click Events-with-jQuery.md
 create mode 100644 Challenge-Turn-an-Image-into-a-Link.md
 create mode 100644 Challenge-Uncomment-HTML.md
 create mode 100644 Challenge-Understand-Boolean-Values.md
 create mode 100644 Challenge-Understand-String-Immutability.md
 create mode 100644 Challenge-Understanding-Case-Sensitivity-in-Variables.md
 create mode 100644 Challenge-Understanding-Uninitialized-Variables.md
 create mode 100644 Challenge-Updating-Object-Properties.md
 create mode 100644 Challenge-Use-Abbreviated-Hex-Code.md
 create mode 100644 Challenge-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md
 create mode 100644 Challenge-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md
 create mode 100644 Challenge-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md
 create mode 100644 Challenge-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md
 create mode 100644 Challenge-Use-CSS-Selectors-to-Style-Elements.md
 create mode 100644 Challenge-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md
 create mode 100644 Challenge-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md
 create mode 100644 Challenge-Use-Comments-to-Clarify-Code.md
 create mode 100644 Challenge-Use-Conditional-Logic-with-If-Else-Statements.md
 create mode 100644 Challenge-Use-HTML5-to-Require-a-Field.md
 create mode 100644 Challenge-Use-Hex-Code-for-Specific-Colors.md
 create mode 100644 Challenge-Use-Hex-Code-for-Specific-Shades-of-Gray.md
 create mode 100644 Challenge-Use-Hex-Code-to-Color-Elements-Blue.md
 create mode 100644 Challenge-Use-Hex-Code-to-Color-Elements-Gray.md
 create mode 100644 Challenge-Use-Hex-Code-to-Color-Elements-Green.md
 create mode 100644 Challenge-Use-Hex-Code-to-Color-Elements-Red.md
 create mode 100644 Challenge-Use-Hex-Code-to-Color-Elements-White.md
 create mode 100644 Challenge-Use-Hex-Code-to-Mix-Colors.md
 create mode 100644 Challenge-Use-RGB-to-Color-Elements-Blue.md
 create mode 100644 Challenge-Use-RGB-to-Color-Elements-Gray.md
 create mode 100644 Challenge-Use-RGB-to-Color-Elements-Green.md
 create mode 100644 Challenge-Use-RGB-to-Color-Elements-Red.md
 create mode 100644 Challenge-Use-RGB-to-Color-Elements-White.md
 create mode 100644 Challenge-Use-RGB-to-Mix-Colors.md
 create mode 100644 Challenge-Use-RGB-values-to-Color-Elements.md
 create mode 100644 Challenge-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md
 create mode 100644 Challenge-Use-Spans-for-Inline-Elements.md
 create mode 100644 Challenge-Use-a-CSS-Class-to-Style-an-Element.md
 create mode 100644 Challenge-Use-an-ID-Attribute-to-Style-an-Element.md
 create mode 100644 Challenge-Use-appendTo-to-Move-Elements-with-jQuery.md
 create mode 100644 Challenge-Use-jQuery-to-Modify-the-Entire-Page.md
 create mode 100644 Challenge-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md
 create mode 100644 Challenge-Use-the-Javascript-Console.md
 create mode 100644 Challenge-Using-Objects-For-Lookups.md
 create mode 100644 Challenge-Using-typeof.md
 create mode 100644 Challenge-Warn-your-Users-of-a-Dangerous-Action.md
 create mode 100644 Challenge-Write-Reusable-JavaScript-with-Functions.md
 create mode 100644 Develop-Back-End-Project-locally-and-run-on-c9.io.md
 delete mode 100644 Develop-BaseJump-locally-and-run-on-c9.io.md
 create mode 100644 Front-End-Project-Use-the-Twitchtv-JSON-API.md
 create mode 100644 Guide-to-Back-End-Projects-Table-of-Contents.md
 delete mode 100644 Guide-to-Basejumps-Table-of-Contents.md
 create mode 100644 Intro-to-Yeoman-Angular-Fullstack-Back-End-Projects.md
 delete mode 100644 Intro-to-Yeoman-Angular-Fullstack-Basejumps.md
 delete mode 100644 Test-issue-with-Bonfire-truncate-a-string.md
 delete mode 100644 Vadodara.md
 delete mode 100644 Waypoint-Access-Array-Data-with-Indexes.md
 delete mode 100644 Waypoint-Access-Multi-Dimensional-Arrays-With-Indexes.md
 delete mode 100644 Waypoint-Accessing-Nested-Arrays-In-Json.md
 delete mode 100644 Waypoint-Accessing-Nested-Objects-In-Json.md
 delete mode 100644 Waypoint-Accessing-Objects-Properties-With-Bracket-Notation.md
 delete mode 100644 Waypoint-Accessing-Objects-Properties-With-The-Dot-Operator.md
 delete mode 100644 Waypoint-Accessing-Objects-Properties-With-Variables.md
 delete mode 100644 Waypoint-Add-Alt-Text-to-an-Image-for-Accessibility.md
 delete mode 100644 Waypoint-Add-Borders-Around-your-Elements.md
 delete mode 100644 Waypoint-Add-Different-Margins-to-Each-Side-of-an-Element.md
 delete mode 100644 Waypoint-Add-Different-Padding-to-Each-Side-of-an-Element.md
 delete mode 100644 Waypoint-Add-Elements-within-your-Bootstrap-Wells.md
 delete mode 100644 Waypoint-Add-Font-Awesome-Icons-to-all-of-our-Buttons.md
 delete mode 100644 Waypoint-Add-Font-Awesome-Icons-to-our-Buttons.md
 delete mode 100644 Waypoint-Add-ID-Attributes-to-Bootstrap-Elements.md
 delete mode 100644 Waypoint-Add-Images-to-your-Website.md
 delete mode 100644 Waypoint-Add-New-Properties-to-a-JavaScript-Object.md
 delete mode 100644 Waypoint-Add-Placeholder-Text-to-a-Text-Field.md
 delete mode 100644 Waypoint-Add-Rounded-Corners-with-a-Border-Radius.md
 delete mode 100644 Waypoint-Add-Two-Numbers-with-JavaScript.md
 delete mode 100644 Waypoint-Add-a-Negative-Margin-to-an-Element.md
 delete mode 100644 Waypoint-Add-a-Submit-Button-to-a-Form.md
 delete mode 100644 Waypoint-Add-your-JavaScript-Slot-Machine-Slots.md
 delete mode 100644 Waypoint-Adding-A-Default-Option-In-Switch-Statements.md
 delete mode 100644 Waypoint-Adjust-the-Margin-of-an-Element.md
 delete mode 100644 Waypoint-Adjusting-the-Padding-of-an-Element.md
 delete mode 100644 Waypoint-Appending-Variables-to-Strings.md
 delete mode 100644 Waypoint-Apply-the-Default-Bootstrap-Button-Style.md
 delete mode 100644 Waypoint-Assignment-With-A-Returned-Value.md
 delete mode 100644 Waypoint-Assignment-with-Divided-by-Equals.md
 delete mode 100644 Waypoint-Assignment-with-Minus-Equals.md
 delete mode 100644 Waypoint-Assignment-with-Plus-Equals.md
 delete mode 100644 Waypoint-Assignment-with-Times-Equals.md
 delete mode 100644 Waypoint-Bring-your-JavaScript-Slot-Machine-to-Life.md
 delete mode 100644 Waypoint-Build-JavaScript-Objects.md
 delete mode 100644 Waypoint-Call-out-Optional-Actions-with-Button-Info.md
 delete mode 100644 Waypoint-Center-Text-with-Bootstrap.md
 delete mode 100644 Waypoint-Chaining-If-Else-Statements.md
 delete mode 100644 Waypoint-Change-Text-Inside-an-Element-Using-jQuery.md
 delete mode 100644 Waypoint-Change-Text-with-Click-Events.md
 delete mode 100644 Waypoint-Change-the-CSS-of-an-Element-Using-jQuery.md
 delete mode 100644 Waypoint-Change-the-Color-of-Text.md
 delete mode 100644 Waypoint-Change-the-Font-Size-of-an-Element.md
 delete mode 100644 Waypoint-Check-Radio-Buttons-and-Checkboxes-by-Default.md
 delete mode 100644 Waypoint-Check-the-Length-Property-of-a-String-Variable.md
 delete mode 100644 Waypoint-Clone-an-Element-Using-jQuery.md
 delete mode 100644 Waypoint-Comment-out-HTML.md
 delete mode 100644 Waypoint-Comment-your-JavaScript-Code.md
 delete mode 100644 Waypoint-Comparison-With-The-Equality-Operator.md
 delete mode 100644 Waypoint-Comparison-With-The-Greater-Than-Equal-To-Operator.md
 delete mode 100644 Waypoint-Comparison-With-The-Greater-Than-Operator.md
 delete mode 100644 Waypoint-Comparison-With-The-Inequality-Operator.md
 delete mode 100644 Waypoint-Comparison-With-The-Less-Than-Equal-To-Operator.md
 delete mode 100644 Waypoint-Comparison-With-The-Less-Than-Operator.md
 delete mode 100644 Waypoint-Comparison-With-The-Strict-Equality-Operator.md
 delete mode 100644 Waypoint-Comparison-With-The-Strict-Inequality-Operator.md
 delete mode 100644 Waypoint-Comparisons-With-The-Logical-And-Operator.md
 delete mode 100644 Waypoint-Comparisons-With-The-Logical-Or-Operator.md
 delete mode 100644 Waypoint-Concatenate-Strings-with-.concat.md
 delete mode 100644 Waypoint-Concatenating-Strings-with-Plus-Operator.md
 delete mode 100644 Waypoint-Concatenating-Strings-with-the-Plus-Equals-Operator.md
 delete mode 100644 Waypoint-Condense-arrays-with-reduce.md
 delete mode 100644 Waypoint-Construct-JavaScript-Objects-with-Functions.md
 delete mode 100644 Waypoint-Constructing-Strings-with-Variables.md
 delete mode 100644 Waypoint-Convert-JSON-Data-to-HTML.md
 delete mode 100644 Waypoint-Count-Backwards-With-a-For-Loop.md
 delete mode 100644 Waypoint-Create-Bootstrap-Wells.md
 delete mode 100644 Waypoint-Create-Decimal-Numbers-with-JavaScript.md
 delete mode 100644 Waypoint-Create-a-Block-Element-Bootstrap-Button.md
 delete mode 100644 Waypoint-Create-a-Bootstrap-Button.md
 delete mode 100644 Waypoint-Create-a-Bootstrap-Headline.md
 delete mode 100644 Waypoint-Create-a-Bootstrap-Row.md
 delete mode 100644 Waypoint-Create-a-Bulleted-Unordered-List.md
 delete mode 100644 Waypoint-Create-a-Class-to-Target-with-jQuery-Selectors.md
 delete mode 100644 Waypoint-Create-a-Custom-Heading.md
 delete mode 100644 Waypoint-Create-a-Form-Element.md
 delete mode 100644 Waypoint-Create-a-JavaScript-Slot-Machine.md
 delete mode 100644 Waypoint-Create-a-Set-of-Checkboxes.md
 delete mode 100644 Waypoint-Create-a-Set-of-Radio-Buttons.md
 delete mode 100644 Waypoint-Create-a-Text-Field.md
 delete mode 100644 Waypoint-Create-an-Ordered-List.md
 delete mode 100644 Waypoint-Declare-JavaScript-Objects-as-Variables.md
 delete mode 100644 Waypoint-Declare-JavaScript-Variables.md
 delete mode 100644 Waypoint-Declare-String-Variables.md
 delete mode 100644 Waypoint-Decrement-a-Number-with-Javascript.md
 delete mode 100644 Waypoint-Delete-HTML-Elements.md
 delete mode 100644 Waypoint-Delete-Properties-from-a-JavaScript-Object.md
 delete mode 100644 Waypoint-Delete-your-jQuery-Functions.md
 delete mode 100644 Waypoint-Disable-an-Element-Using-jQuery.md
 delete mode 100644 Waypoint-Ditch-Custom-CSS-for-Bootstrap.md
 delete mode 100644 Waypoint-Divide-One-Number-by-Another-with-JavaScript.md
 delete mode 100644 Waypoint-Escape-Sequences-in-Strings.md
 delete mode 100644 Waypoint-Escaping-Literal-Quotes-in-Strings.md
 delete mode 100644 Waypoint-Fill-in-the-Blank-with-Placeholder-Text.md
 delete mode 100644 Waypoint-Filter-Arrays-with-filter.md
 delete mode 100644 Waypoint-Find-Numbers-with-Regular-Expressions.md
 delete mode 100644 Waypoint-Find-White-Space-with-Regular-Expressions.md
 delete mode 100644 Waypoint-Find-the-Length-of-a-String.md
 delete mode 100644 Waypoint-Finding-a-Remainder-in-Javascript.md
 delete mode 100644 Waypoint-Generate-Random-Fractions-with-JavaScript.md
 delete mode 100644 Waypoint-Generate-Random-Whole-Numbers-with-JavaScript.md
 delete mode 100644 Waypoint-Generate-Random-Whole-Numbers-within-a-Range.md
 delete mode 100644 Waypoint-Get-Geo-location-Data.md
 delete mode 100644 Waypoint-Get-JSON-with-the-jQuery-getJSON-Method.md
 delete mode 100644 Waypoint-Give-Each-Element-a-Unique-ID.md
 delete mode 100644 Waypoint-Give-a-Background-Color-to-a-Div-Element.md
 delete mode 100644 Waypoint-Give-your-JavaScript-Slot-Machine-some-stylish-images.md
 delete mode 100644 Waypoint-Global-Scope-And-Functions.md
 delete mode 100644 Waypoint-Global-Vs-Local-Scope-In-Functions.md
 delete mode 100644 Waypoint-Headline-with-the-h2-Element.md
 delete mode 100644 Waypoint-House-our-page-within-a-Bootstrap-Container-Fluid-Div.md
 delete mode 100644 Waypoint-Import-a-Google-Font.md
 delete mode 100644 Waypoint-Increment-a-Number-with-Javascript.md
 delete mode 100644 Waypoint-Inform-with-the-Paragraph-Element.md
 delete mode 100644 Waypoint-Inherit-Styles-from-the-Body-Element.md
 delete mode 100644 Waypoint-Initializing-Variables-with-the-Equal-Operator.md
 delete mode 100644 Waypoint-Introducing-Else-If-Statements.md
 delete mode 100644 Waypoint-Introducing-Else-Statements.md
 delete mode 100644 Waypoint-Introducing-Javascript-Object-Notation-Json.md
 delete mode 100644 Waypoint-Invert-Regular-Expression-Matches-with-JavaScript.md
 delete mode 100644 Waypoint-Iterate-Odd-Numbers-With-a-For-Loop.md
 delete mode 100644 Waypoint-Iterate-Through-An-Array-With-A-For-Loop.md
 delete mode 100644 Waypoint-Iterate-over-Arrays-with-map.md
 delete mode 100644 Waypoint-Iterate-with-JavaScript-For-Loops.md
 delete mode 100644 Waypoint-Iterate-with-JavaScript-While-Loops.md
 delete mode 100644 Waypoint-Join-Strings-with-.join.md
 delete mode 100644 Waypoint-Label-Bootstrap-Buttons.md
 delete mode 100644 Waypoint-Label-Bootstrap-Wells.md
 delete mode 100644 Waypoint-Learn-how-Script-Tags-and-Document-Ready-Work.md
 delete mode 100644 Waypoint-Line-up-Form-Elements-Responsively-with-Bootstrap.md
 delete mode 100644 Waypoint-Link-to-External-Pages-with-Anchor-Elements.md
 delete mode 100644 Waypoint-Local-Scope-And-Functions.md
 delete mode 100644 Waypoint-Make-Circular-Images-with-a-Border-Radius.md
 delete mode 100644 Waypoint-Make-Dead-Links-using-the-Hash-Symbol.md
 delete mode 100644 Waypoint-Make-Images-Mobile-Responsive.md
 delete mode 100644 Waypoint-Make-Instances-of-Objects-with-a-Constructor-Function.md
 delete mode 100644 Waypoint-Make-Object-Properties-Private.md
 delete mode 100644 Waypoint-Make-Unique-Objects-by-Passing-Parameters-to-our-Constructor.md
 delete mode 100644 Waypoint-Manipulate-Arrays-With-pop().md
 delete mode 100644 Waypoint-Manipulate-Arrays-With-push().md
 delete mode 100644 Waypoint-Manipulate-Arrays-With-shift().md
 delete mode 100644 Waypoint-Manipulate-Arrays-With-unshift().md
 delete mode 100644 Waypoint-Manipulate-JavaScript-Objects.md
 delete mode 100644 Waypoint-Modify-Array-Data-With-Indexes.md
 delete mode 100644 Waypoint-Multiple-Identical-Options-In-Switch-Statements.md
 delete mode 100644 Waypoint-Multiply-Two-Numbers-with-JavaScript.md
 delete mode 100644 Waypoint-Nest-Many-Elements-within-a-Single-Div-Element.md
 delete mode 100644 Waypoint-Nest-an-Anchor-Element-within-a-Paragraph.md
 delete mode 100644 Waypoint-Nest-one-Array-within-Another-Array.md
 delete mode 100644 Waypoint-Nesting-For-Loops.md
 delete mode 100644 Waypoint-Override-All-Other-Styles-by-using-Important.md
 delete mode 100644 Waypoint-Override-Class-Declarations-by-Styling-ID-Attributes.md
 delete mode 100644 Waypoint-Override-Class-Declarations-with-Inline-Styles.md
 delete mode 100644 Waypoint-Override-Styles-in-Subsequent-CSS.md
 delete mode 100644 Waypoint-Passing-Values-To-Functions-With-Arguments.md
 delete mode 100644 Waypoint-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md
 delete mode 100644 Waypoint-Prefilter-JSON.md
 delete mode 100644 Waypoint-Prioritize-One-Style-Over-Another.md
 delete mode 100644 Waypoint-Quoting-Strings-with-Single-Quotes.md
 delete mode 100644 Waypoint-Remove-Classes-from-an-element-with-jQuery.md
 delete mode 100644 Waypoint-Remove-an-Element-Using-jQuery.md
 delete mode 100644 Waypoint-Render-Images-from-Data-Sources.md
 delete mode 100644 Waypoint-Replacing-If-Else-Chains-With-Switch.md
 delete mode 100644 Waypoint-Responsively-Style-Checkboxes.md
 delete mode 100644 Waypoint-Responsively-Style-Radio-Buttons.md
 delete mode 100644 Waypoint-Return-A-Value-From-A-Function-With-Return.md
 delete mode 100644 Waypoint-Return-Early-Pattern-For-Functions.md
 delete mode 100644 Waypoint-Returning-Boolean-Values-From-Functions.md
 delete mode 100644 Waypoint-Reverse-Arrays-with-reverse.md
 delete mode 100644 Waypoint-Save-your-Code-Revisions-Forever-with-Git.md
 delete mode 100644 Waypoint-Say-Hello-to-HTML-Elements.md
 delete mode 100644 Waypoint-Selecting-From-Many-Options-With-Switch-Statements.md
 delete mode 100644 Waypoint-Set-the-Font-Family-of-an-Element.md
 delete mode 100644 Waypoint-Set-the-ID-of-an-Element.md
 delete mode 100644 Waypoint-Sift-through-Text-with-Regular-Expressions.md
 delete mode 100644 Waypoint-Size-your-Images.md
 delete mode 100644 Waypoint-Sort-Arrays-with-sort.md
 delete mode 100644 Waypoint-Specify-How-Fonts-Should-Degrade.md
 delete mode 100644 Waypoint-Split-Strings-with-split.md
 delete mode 100644 Waypoint-Split-your-Bootstrap-Row.md
 delete mode 100644 Waypoint-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md
 delete mode 100644 Waypoint-Storing-Values-with-the-Equal-Operator.md
 delete mode 100644 Waypoint-Style-Multiple-Elements-with-a-CSS-Class.md
 delete mode 100644 Waypoint-Style-Text-Inputs-as-Form-Controls.md
 delete mode 100644 Waypoint-Style-the-HTML-Body-Element.md
 delete mode 100644 Waypoint-Subtract-One-Number-from-Another-with-JavaScript.md
 delete mode 100644 Waypoint-Target-Elements-by-Class-Using-jQuery.md
 delete mode 100644 Waypoint-Target-Elements-by-ID-Using-jQuery.md
 delete mode 100644 Waypoint-Target-Even-Numbered-Elements-Using-jQuery.md
 delete mode 100644 Waypoint-Target-HTML-Elements-with-Selectors-Using-jQuery.md
 delete mode 100644 Waypoint-Target-a-Specific-Child-of-an-Element-Using-jQuery.md
 delete mode 100644 Waypoint-Target-the-Children-of-an-Element-Using-jQuery.md
 delete mode 100644 Waypoint-Target-the-Parent-of-an-Element-Using-jQuery.md
 delete mode 100644 Waypoint-Target-the-same-element-with-multiple-jQuery-Selectors.md
 delete mode 100644 Waypoint-Taste-the-Bootstrap-Button-Color-Rainbow.md
 delete mode 100644 Waypoint-Testing-Objects-For-Properties.md
 delete mode 100644 Waypoint-Trigger-Click Events-with-jQuery.md
 delete mode 100644 Waypoint-Turn-an-Image-into-a-Link.md
 delete mode 100644 Waypoint-Uncomment-HTML.md
 delete mode 100644 Waypoint-Understand-Boolean-Values.md
 delete mode 100644 Waypoint-Understand-String-Immutability.md
 delete mode 100644 Waypoint-Understanding-Case-Sensitivity-in-Variables.md
 delete mode 100644 Waypoint-Understanding-Uninitialized-Variables.md
 delete mode 100644 Waypoint-Updating-Object-Properties.md
 delete mode 100644 Waypoint-Use-Abbreviated-Hex-Code.md
 delete mode 100644 Waypoint-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md
 delete mode 100644 Waypoint-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md
 delete mode 100644 Waypoint-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md
 delete mode 100644 Waypoint-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md
 delete mode 100644 Waypoint-Use-CSS-Selectors-to-Style-Elements.md
 delete mode 100644 Waypoint-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md
 delete mode 100644 Waypoint-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md
 delete mode 100644 Waypoint-Use-Comments-to-Clarify-Code.md
 delete mode 100644 Waypoint-Use-Conditional-Logic-with-If-Else-Statements.md
 delete mode 100644 Waypoint-Use-HTML5-to-Require-a-Field.md
 delete mode 100644 Waypoint-Use-Hex-Code-for-Specific-Colors.md
 delete mode 100644 Waypoint-Use-Hex-Code-for-Specific-Shades-of-Gray.md
 delete mode 100644 Waypoint-Use-Hex-Code-to-Color-Elements-Blue.md
 delete mode 100644 Waypoint-Use-Hex-Code-to-Color-Elements-Gray.md
 delete mode 100644 Waypoint-Use-Hex-Code-to-Color-Elements-Green.md
 delete mode 100644 Waypoint-Use-Hex-Code-to-Color-Elements-Red.md
 delete mode 100644 Waypoint-Use-Hex-Code-to-Color-Elements-White.md
 delete mode 100644 Waypoint-Use-Hex-Code-to-Mix-Colors.md
 delete mode 100644 Waypoint-Use-RGB-to-Color-Elements-Blue.md
 delete mode 100644 Waypoint-Use-RGB-to-Color-Elements-Gray.md
 delete mode 100644 Waypoint-Use-RGB-to-Color-Elements-Green.md
 delete mode 100644 Waypoint-Use-RGB-to-Color-Elements-Red.md
 delete mode 100644 Waypoint-Use-RGB-to-Color-Elements-White.md
 delete mode 100644 Waypoint-Use-RGB-to-Mix-Colors.md
 delete mode 100644 Waypoint-Use-RGB-values-to-Color-Elements.md
 delete mode 100644 Waypoint-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md
 delete mode 100644 Waypoint-Use-Spans-for-Inline-Elements.md
 delete mode 100644 Waypoint-Use-a-CSS-Class-to-Style-an-Element.md
 delete mode 100644 Waypoint-Use-an-ID-Attribute-to-Style-an-Element.md
 delete mode 100644 Waypoint-Use-appendTo-to-Move-Elements-with-jQuery.md
 delete mode 100644 Waypoint-Use-jQuery-to-Modify-the-Entire-Page.md
 delete mode 100644 Waypoint-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md
 delete mode 100644 Waypoint-Use-the-Javascript-Console.md
 delete mode 100644 Waypoint-Using-Objects-For-Lookups.md
 delete mode 100644 Waypoint-Using-typeof.md
 delete mode 100644 Waypoint-Warn-your-Users-of-a-Dangerous-Action.md
 delete mode 100644 Waypoint-Write-Reusable-JavaScript-with-Functions.md
 create mode 100644 What-the-style-guide-for-Algorithms-is.md
 delete mode 100644 What-the-style-guide-for-Bonfires-is.md
 delete mode 100644 Zipline-Use-the-Twitchtv-JSON-API.md
 delete mode 100644 botideas.md
 delete mode 100644 botpreso.md
 delete mode 100644 good-code.md
 create mode 100644 npm-debug.log
 create mode 100644 rename-wiki.bat
 delete mode 100644 triphop.md
 delete mode 100644 video.md

diff --git a/Algorithm-Arguments-Optional.md b/Algorithm-Arguments-Optional.md
new file mode 100644
index 0000000..2bfe308
--- /dev/null
+++ b/Algorithm-Arguments-Optional.md
@@ -0,0 +1,121 @@
+![](http://i.imgur.com/63Iaec6.jpg)
+
+# Explanation:
+It can be quite complicated to understand what needs to be done. There are always many ways to do something when coding but regardless of the algorithm used,  we have to create a program that does the following:
+- It has to add two numbers passed as parameters and return the sum.
+- It has to check if any of the numbers are actual numbers, otherwise return **undefined** and stop the program right there.
+- It has to check if it has one or two arguments passed. More are ignored.
+- If it has only one argument then it has to return a function that uses that number and expects another one, to then add it.
+
+## Hint: 1
+Every time you deal with an argument, you have to check if it is a number or not. For this a function that handles this task will save you repeated code.
+
+## Hint: 2
+When working on the case that it needs to return the function, it is wise to check if the first and only argument is a number again and base the code on that.
+
+## Hint: 3
+In the case that only one argument was passed, do not worry about how to prompt input for the second one, just make the function definition properly and things will work out the way they should.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function add() {
+  // Function to check if a number is actually a number
+  // and return undefined otherwise.
+  var checkNum = function(num) {
+    if (typeof num !== 'number') {
+      return undefined;
+    } else
+      return num;
+  };
+
+  // Check if we have two parameters, check if they are numbers
+  // handle the case where one is not
+  // returns the addition.
+  if (arguments.length > 1) {
+    var a = checkNum(arguments[0]);
+    var b = checkNum(arguments[1]);
+    if (a === undefined || b === undefined) {
+      return undefined;
+    } else {
+      return a + b;
+    }
+  } else {
+    // If only one parameter was found, returns a new function that expects two
+    // Store first argument before entering the new function scope
+    var c = arguments[0];
+
+    // Check the number again, must be outside the function to about returning an object
+    // instead of undefined.
+    if (checkNum(c)) {
+      // Return function that expect a second argument.
+      return function(arg2) {
+        // Check for non-numbers
+        if (c === undefined || checkNum(arg2) === undefined) {
+          return undefined;
+        } else {
+          // if numbers then add them.
+          return c + arg2;
+        }
+      };
+    }
+  }
+}
+```
+
+# Code Explanation:
+- First, I create a function with the sole purpose of checking if a number is actually a number and returns undefined if it is not. It uses **typeof** to check.
+- Check if we have two parameters, if so, then check if they are numbers or not using the **checkNum** function I created.
+- If they are not **undefined** then add them and return the addition. If they any of them is undefined then return undefined.
+- In the case that we only have one argument, then we return a new function that expects two parameters. For this we store the first argument before going into a new scope to avoid our arguments being overwritten.
+- Still inside the big else, we need to check the argument we saved, if it is a number then we return the function expecting a second argument.
+- Now inside the function we are returning, we have to check for non numbers again just as at the beginning using **checkNum** if undefined then return that, otherwise if numbers add them and return the addition.
+
+## Second Solution:
+
+```js
+function add() {
+  var args = new Array(arguments.length);
+  //Storing the arguments in an array
+  for(var i = 0; i < args.length; ++i) {
+      args[i] = arguments[i];
+    }
+ //Check for the arguments length
+ if(args.length == 2){
+    //If there are two arguments,check for the type of both arguments
+    //Use typeof to check the type of the argument(both should be numbers)
+    if(typeof args[0] !== 'number' || typeof args[1] !=='number' ){
+      return undefined;
+      }
+    return args[0]+args[1];
+   }
+ //When only one argument is provided
+ if(args.length == 1){
+     a= args[0];
+     //Check the  argument using typeof 
+    if(typeof a!=='number'){
+        return undefined;
+      }
+    else{
+       //Making use of closures 
+       return function(b){
+       //Checking the second argument 
+         if(typeof b !=='number'){
+           return undefined;
+           }
+         else
+           return a+b;
+          };
+      }
+    }
+}
+```
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @coded9 for your help with Bonfire: Arguments Optional`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Binary-Agents.md b/Algorithm-Binary-Agents.md
new file mode 100644
index 0000000..33739b0
--- /dev/null
+++ b/Algorithm-Binary-Agents.md
@@ -0,0 +1,120 @@
+![](http://i.imgur.com/HSwaSFK.jpg)
+
+# Explanation:
+This problem is very straight forward, you will get a string that will represent a sentence in binary code, and you need to translate that into words. There is not direct way to do this so you will have to translate twice.
+
+## Hint: 1
+You should first convert from **binary** to **decimal** before translating those values into characters
+
+## Hint: 2
+Things are easier when focusing on smaller parts, divide the input to focus on one letter at the time.
+
+## Hint: 3
+Make sure that each time you transcode a character from binary to decimal, you reset whatever variable you used to keep track of the ones. Also do not forget to turn everything back into one string.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution 1:
+
+```js
+function binaryAgent(str) {
+  biString = str.split(' ');
+  uniString = [];
+  
+/*using the radix (or base) parameter in parseInt, we can convert the binary 
+  number to a decimal number while simultaneously converting to a char*/
+
+   for(i=0;i < biString.length;i++){
+   uniString.push(String.fromCharCode(parseInt(biString[i], 2))); 
+  }
+//we then simply join the string
+  return uniString.join('');
+}
+```
+# Code Explanation:
+- Separate the string into an array of strings separated by whitespace.
+- Create some variables that will be needed along the way, the names are self explanatory for the most part.
+- Iterate through each binary string in the new array.
+- Convert to decimal by using parseInt(*binary*, 2) (with the second parameter we tell in which base our numbers currently are) 
+- At the end, we return out converted message.
+
+## Code Solution 2:
+
+```js
+function binaryAgent(str) {
+  // Separate the binary code by space.
+  str = str.split(' ');
+  var power;
+  var decValue = 0;
+  var sentence = '';
+
+  // Check each binary number from the array.
+  for (var s = 0; s < str.length; s++) {
+    // Check each bit from binary number
+    for (var t = 0; t < str[s].length; t++) {
+      // This only takes into consideration the active ones.
+      if (str[s][t] == 1) {
+        // This is quivalent to 2 ** position
+        power = Math.pow(2, +str[s].length - t - 1);
+        decValue += power;
+
+        // Record the decimal value by adding the number to the previous one.
+      }
+    }
+
+    // After the binary number is converted to decimal, convert it to string and store
+    sentence += (String.fromCharCode(decValue));
+
+    // Reset decimal value for next binary number.
+    decValue = 0;
+  }
+
+  return sentence;
+}
+```
+# Code Explanation
+- For each of these binary strings, check for the ones and ignore the zeroes.
+- For those that are one or active then convert them to decimal, this takes into account the position and the right power it needs to be raised to.
+- Store the power into the **power** variable by adding it to any previous ones on the variable **decValue**. This variable will add and add the powers of the active ones until the end of the loop and then return the decimal number.
+- Convert the final decimal outside of the inner loop and then convert it to ASCII and saving it to **sentence** along with any other text string already converted and stored.
+- Reset the variable **decValue** to avoid getting wrong decimals before continuing to the outer loop.
+
+## Code Solution 3:
+
+```js
+function binaryAgent(str) {
+  return String.fromCharCode(...str.split(" ").map(function(char){ return parseInt(char, 2); }));
+}
+```
+
+# Code Explanation
+- First we use `split()` to be able to work on each character as an Array element
+- Then use `map()` to process each element  from binary to decimal using `pareseInt()`
+- Last we can use `String.fromCharCode()` to convert each ASCII number into the corresponding character
+- However `fromCharCode()` expects a series of numbers rather than an Array! We can use ES6 Spread Operator to pass in an Array of numbers as individual numbers. See here for more info; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator
+
+## Code Solution 4:
+
+```js
+function binaryAgent(str) {
+  var re = /(\d+)(\s?)/g;
+  function convertToChar(match,p1,p2){
+    return String.fromCharCode(parseInt(p1, 2));
+  }
+  return str.replace(re, convertToChar);
+}
+```
+
+# Code Explanation
+- In this solution we use `String.replace()` to find all the binary numbers and convert them to characters
+- First we use a regular expression to find all the binary numbers and optional trailing spaces
+- Then we define a function that converts the first parenthesized submatch into a number `parseInt()` and then into a character`String.fromCharCode()`. By not using the second parenthisized submatch we leave out all the spaces that where in between the binary numbers.
+- Lastly we use our defined regex and function in the `String.replace()` function.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`thanks @Rafase282 @JamesKee @sabahang @crisvdkooij for your help with Bonfire: Binary Agents`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Boo-who.md b/Algorithm-Boo-who.md
new file mode 100644
index 0000000..69fc52c
--- /dev/null
+++ b/Algorithm-Boo-who.md
@@ -0,0 +1,36 @@
+![](http://i.imgur.com/CgROCEF.jpg)
+
+# Problem Explanation:
+- This program is very simple, the trick is to understand what a boolean primitive is. The programs requires a true or false answer.
+
+## Hint: 1
+- You will need to check for the type of the parameter to see if it is a boolean.
+
+## Hint: 2
+- To check for the type of a parameter, you can use `typeof`
+
+## Hint: 3
+- Since you must return true or false you can use if statements or just have it return the boolean used for the if statement.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function boo(bool) {
+  return typeof bool === 'boolean';
+}
+```
+
+# Code Explanation:
+
+Uses the operator `typeof` to check if the variable is a boolean.
+If it is, it will return `true`. Otherwise, if it is any other type it will return `false`.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 for your help with Bonfire: Boo-who`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Caesars-Cipher.md b/Algorithm-Caesars-Cipher.md
new file mode 100644
index 0000000..4c01b3d
--- /dev/null
+++ b/Algorithm-Caesars-Cipher.md
@@ -0,0 +1,92 @@
+# Problem Explanation:
+- You need to write a function, which will take string encoded with
+*Caesar cipher* as a parameter and decode it.
+- The one used here is ROT13 where the value of the letter is
+shifted by 13 places.
+e.g. 'A' ↔ 'N', 'T' ↔ 'G'.
+- You have to shift it back 13 positions, such that 'N' ↔ 'A'.
+
+## Hint: 1
+Use *String.charCodeAt()* to convert the English character to ASCII.
+
+
+## Hint: 2
+Use *String.fromCharCode()* to convert ASCII to English character.
+
+## Hint: 3
+Leave anything that doesn't come between A-Z as it is.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+#### First solution
+
+```js
+function rot13(str) {
+    var nstr="";
+    for(var i=0; i<str.length; i++){
+        //Checks if character lies between A-Z
+        if(str.charCodeAt(i) < 65 || str.charCodeAt(i) > 91) {
+            nstr += String.fromCharCode(str.charCodeAt(i));
+            continue;
+        }
+        //N = ASCII 78, if the character code is less than 78, shift forward 13 places
+        if(str.charCodeAt(i) < 78){
+            nstr += String.fromCharCode(str.charCodeAt(i) + 13);
+        }
+        else{
+            //Otherwise shift the character 13 places backward
+            nstr += String.fromCharCode(str.charCodeAt(i) - 13);
+
+        }
+    }
+
+    return nstr;
+}
+```
+
+#### Second solution (advanced)
+
+```js
+function rot13(str) {
+  // Split str into a character array
+  return str.split('')
+  // Iterate over each character in the array
+    .map.call(str, function(char) {
+      // Convert char to a character code
+      x = char.charCodeAt(0);
+      // Checks if character lies between A-Z
+      if (x < 65 || x > 91) {
+        return String.fromCharCode(x);  // Return un-converted character
+      }
+      //N = ASCII 78, if the character code is less than 78, shift forward 13 places
+      else if (x < 78) {
+        return String.fromCharCode(x + 13);
+      }
+      // Otherwise shift the character 13 places backward
+      return String.fromCharCode(x - 13);
+    }).join('');  // Rejoin the array into a string
+}
+```
+
+# Code Explanation:
+#### First solution
+- A string variable `nstr` is declared and initialized to store the
+decoded string.
+- The for loop is used to loop through each character of the input string.
+- If the character is not uppercase English alphabets(i.e. its ascii doesn't lie between 65 and 91 ), we'll leave it
+as it is and [continue](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue) with next iteration.
+- If it's the uppercase English alphabet, we'll subtract 13 from it's
+ascii code.
+- If the ascii code is less than 78, it'll get out of
+range when subtracted by 13 so we'll add 26(number of letters in
+        English alphabets) to it so that after A it'll go back to Z.
+e.g. M(77) ↔ 77-13 = 64(Not an English alphabet) +26 = 90 ↔ Z(90)
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @anuragaryan and @SaintPeter for your help with Bonfire: Caesar's Cipher`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Check-for-Palindromes.md b/Algorithm-Check-for-Palindromes.md
new file mode 100644
index 0000000..322a55e
--- /dev/null
+++ b/Algorithm-Check-for-Palindromes.md
@@ -0,0 +1,105 @@
+![](http://i.imgur.com/ozDWKEi.jpg)
+
+# Explanation:
+Our goal for solving this problem is tidying up the string passed in, and checking whether it is in fact a palindrome.
+- If you are unsure of what a palindrome is, it is a word or phrase that when reversed spells the same thing forwards or backwards. A simple example is `mom`, when you reverse the letters, it spells the same thing! Another example of a palindrome is `race car`. When we take out anything that is not a character it becomes `racecar` which is the same spelled forwards or backwards!
+
+Once we have determined whether it is a palindrome or not we want to return either `true` or `false` based on our findings.
+
+## Hint: 1
+Regular expressions, `RegEx`, can be used to remove unwanted characters from the string.
+- [http://devdocs.io/#q=js+RegExp](http://devdocs.io/#q=js+RegExp)
+
+## Hint: 2
+The `Array.prototype.split` and `Array.prototype.join` methods can be of use here. `For` and `while` loops are another alternative, or why not even `map`!
+- [http://devdocs.io/#q=js+String+split](http://devdocs.io/#q=js+String+split)
+- [http://devdocs.io/#q=js+Array+join](http://devdocs.io/#q=js+Array+join)
+- [http://devdocs.io/#q=js+for](http://devdocs.io/#q=js+for)
+
+## Hint: 3
+`String.prototype.toLowerCase` can be used to make a string lowercase.
+- [http://devdocs.io/#q=js+String+toLowerCase](http://devdocs.io/#q=js+String+toLowerCase)
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## First Solution
+
+```js
+function palindrome(str) {
+  return str.replace(/[\W_]/g, '').toLowerCase() ===
+         str.replace(/[\W_]/g, '').toLowerCase().split('').reverse().join('');
+}
+```
+
+## Second Solution
+
+```js
+function palindrome(str) {
+  str = str.toLowerCase().replace(/[\W_]/g, '');
+  for(var i = 0, len = str.length - 1; i < len/2; i++) {
+    if(str[i] !== str[len-i]) {
+      return false;
+    }
+  }
+  return true;
+}
+```
+
+## Third Solution
+(using recursion)
+```js
+function palindrome(str) {
+// make all letters lowercase and remove non-alphanumeric characters
+  str = str.toLowerCase().replace(/[^a-z|1-9]/g, "");
+
+  // if the length of the string is 0 then it is a palindrome
+  if (str.length === 0){
+    return true;
+  }
+  // if the first letter and the last letter of the string
+  // do not equal each other, then it is not a palindrome
+  if (str[0] !== str[str.length-1]){
+    return false;
+  }
+  //Else, run the function without the first and last characters.
+  else{
+    return palindrome(str.slice(1,str.length - 1));
+  }
+}
+```
+
+# Code Explanation:
+
+## First Solution
+- We start by using regular expressions to replace any white space or non-alphanumeric characters with nothing (or `null`), which essentially removes them from the string.
+
+- Next we *chain* `.toLowerCase()` to remove any capital letters because `A` is a different character than `a`. The problem did not ask us to worry about making sure the case of the characters was identical, just the spelling.
+
+- Our next step is to take our string and `.split()` it, `.reverse()` it, and finally `.join()` it back together.
+
+- Last step is to check that the string is the same forwards and backwards and return our result!
+
+## Second solution
+- We start by using the same methods of replacing characters we don't want in the string using `RegEx`'s, regular expressions, and then make our string lowercase.
+
+- Next we set up our `for` loop and declare an index `i` to keep track of the loop. We set our escape sequence to when `i` is greater than the length of the string divided by two, which tells the loop to stop after the halfway point of the string. And finally we set `i` to increment after every loop.
+
+- Inside of each loop we want to check that the letter in element `[i]` is equal to the letter in the length of the string minus i, `[str.length - i]`. Each loop, the element that is checked on both sides of the string moves closer to the center until we have checked all of the letters. If at any point the letters do not match, we return `false`. If the loop completes successfully, it means we have a palindrome and therefore we return `true`!
+
+## Third Solution
+
+- This solution uses the power of recursion instead of a for loop! Our first step is to once again use `RegEx`'s to remove any characters that we do not want in the string, like whitespace or non-alphanumeric characters.
+
+- Our next step is check if the length of the string is 0, if it is we return `true` because it is a palindrome. (this will make a little more sense after you read all the steps).
+
+- Next we want to check that the first and last elements of the string are the same. If they are not the same, we return false which exits the function, and breaks out of the recursive loop.
+
+- If neither of the first two conditions are met, then we assume that the two characters are equal, and we return a recursive call to the function. The difference here is that we pass the current value of `str` and we slice the first and last elements off the string. This process continues until there are no characters left to check!
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @abhisekp @shadowfool for your help with Bonfire: Check for Palindromes`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Chunky-Monkey.md b/Algorithm-Chunky-Monkey.md
new file mode 100644
index 0000000..c8630c9
--- /dev/null
+++ b/Algorithm-Chunky-Monkey.md
@@ -0,0 +1,140 @@
+![](http://i.imgur.com/RdrnNvA.png)
+
+# Explanation
+Our goal for this bonfire is to split `arr` (first argument) into smaller chunks of arrays with the length provided by `size` (second argument). There are 4 green checks (objectives) our code needs to pass in order to complete this bonfire:
+1. `(['a', 'b', 'c', 'd'], 2)` is expected to be `[['a', 'b'], ['c', 'd']]`
+2. `([0, 1, 2, 3, 4, 5], 3)` is expected to be `[[0, 1, 2], [3, 4, 5]]`
+3. `([0, 1, 2, 3, 4, 5], 2)` is expected to be `[[0, 1], [2, 3], [4, 5]]`
+4. `([0, 1, 2, 3, 4, 5], 4)` is expected to be `[[0, 1, 2, 3], [4, 5]]`
+
+Click **More information** under the bonfire title and read the helpful links if you haven't yet.   
+
+## How to approach the bonfire
+The helpful links suggest to use `Array.push()` so let's start by first creating a new array to store the smaller arrays we will soon have like this:
+
+```js
+var newArray = [];
+```
+
+  Next we'll need a `for loop` to loop through `arr` then finally we need a method to do the actual splitting and we can use `Array.slice()` to do that. The key to this bonfire is understanding how a `for loop`, `size`, `Array.slice()` and `Array.push()` all work together.  
+
+# How does a for loop and Array.slice() work
+**For Loop**
+
+A `for loop` keeps looping until a condition evaluates to false for example if we had:
+
+```js
+for (var i = 0; i < arr.length; i++)
+```
+
+  `i` starts with a value of 0, `i` loops until `i` is no longer less than the length of `arr` and during each repeat loop, the value of `i` increases by 1 (one). If `arr.length` happens to be 4 then the `for loop` stops right before `i` reaches 4.  
+
+**Array.slice() Method**
+
+`Array.slice()` method extracts a portion of an array and returns a copy into a new array. We can declare which element to start and which element to stop. For example, if `arr` is `['a', 'b', 'c', 'd']` and we used `arr.slice(1, 3);`, the `Array.slice()` method starts at element 1 and stops at element 3 then returns:
+
+```js
+["b","c"]
+```
+
+_Notice how it captures the start element but doesn't capture the stop element._  
+
+# Using a for loop and Array.slice() together
+If we use the following `for loop` while `size` is 2 (note: `size` = 2):
+
+```js
+(var i = 0; i < arr.length; i += size)
+```
+
+  The loop starts at element 0, loops once then `i += 2` which is another way of stating `i = i + 2` so now the new value of `i` becomes 2. What happens if we combine the following `arr.slice()` with the `for loop`?
+
+```js
+arr.slice(i, i + size)
+```
+
+# Push the arrays out
+We can combine the `Array.slice()` method with the `Array.push()` method inside the `for loop` like this:
+
+```js
+for (var i = 0; i < arr.length; i += size) {
+newArray.push(arr.slice(i, i + size));
+}
+```
+
+  `arr.slice()` will start at element 0 and stop at element 2. Here's the fun part: once the `for loop`, loops again then the value of `i` becomes 2 while the `i` in the `arr.slice()` will also have a value of 2. The new `arr.slice()` becomes:
+
+```js
+arr.slice(2, 2 + 2)
+```
+
+  Now `arr.slice()` starts at the element 2 and stops at element 4 and in the next loop, `arr.slice()` will start at element 4 and stop at element 6. `newArray.push()` will push all the elements out into chunks of smaller arrays with the length of `size`.
+  
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**  
+
+## Code Solution:
+
+#### Solution 1:
+
+```js
+function chunk(arr, size) {
+
+  var temp = [];
+  var result = [];
+
+  for (var a = 0; a < arr.length; a++) {
+    if (a % size !== size - 1)
+      temp.push(arr[a]);
+    else {
+      temp.push(arr[a]);
+      result.push(temp);
+      temp = [];
+    }
+  }
+
+  if (temp.length !== 0)
+    result.push(temp);
+  return result;
+}
+```
+
+#### Solution 2:
+
+```js
+function chunk(arr, size) {
+  // Break it up
+  // It's already broken :(
+  arr = arr.slice();
+  var arr2 = [];
+  for(var i = 0, len = arr.length; i < len; i+=size) {
+    arr2.push(arr.slice(0, size));
+    arr = arr.slice(size);
+  }
+  return arr2;
+}
+```
+
+#### Solution 3:
+
+```js
+function chunk(arr, size) {
+  // Break it up.
+  var newArr = [];
+  var i = 0;
+  
+  while (i < arr.length) {
+    newArray.push(arr.slice(i, i+size));
+    i += size;
+  }
+  return newArr;
+}
+chunk(["a", "b", "c", "d"], 2);
+```
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @kirah1314 @Rafase282 @jsommamtek for your help with Bonfire: Chunky Monkey`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
+
diff --git a/Algorithm-Confirm-the-Ending.md b/Algorithm-Confirm-the-Ending.md
new file mode 100644
index 0000000..b3870ab
--- /dev/null
+++ b/Algorithm-Confirm-the-Ending.md
@@ -0,0 +1,34 @@
+![](http://i.imgur.com/Z7vhddH.jpg)
+
+# Explanation:
+The function is a whole Boolean operation. You need to return true if the first argument ends with the second argument. This means that for the problem script, it should return true for the `end('Bastian', 'n'); case.`
+
+## Hint: 1
+Take a look at how substr() works. You will be trying to get the last Nth characters.
+
+## Hint: 2
+To get the Nth-to-Last character you will use length() and turn it into a negative number.
+
+## Hint: 3
+Check that you have the proper syntax and that you use `===` to compare.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function end(str, target) {
+  return str.substr(-target.length) === target;
+}
+```
+
+# Code Explanation:
+We use the subtring() with the negative value of the lengths of target. We could use -1 to get the last element but if the target is actually longer than one letter then the program will provide the wrong information. Then we return the value of this boolean expression.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 for your help with Bonfire: Confirm the Ending`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
\ No newline at end of file
diff --git a/Algorithm-Convert-HTML-Entities.md b/Algorithm-Convert-HTML-Entities.md
new file mode 100644
index 0000000..57dc74c
--- /dev/null
+++ b/Algorithm-Convert-HTML-Entities.md
@@ -0,0 +1,88 @@
+![](http://i.imgur.com/g7sWL1I.jpg)
+
+# Problem Explanation:
+- You have to create a program that will convert HTML entities from string to their corresponding HTML entities. There are only a few so you can use different methods.
+
+## Hint: 1
+- You can use regular Expressions however I didn't in this case.
+
+## Hint: 2
+- You will benefit form a chart with all the html entities so you know which ones are the right ones to put.
+
+## Hint: 3
+- You should separate the string and work with each character to convert the right ones and then join everything back up.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function convert(str) {
+  // Split by character to avoid problems.
+
+  var temp = str.split('');
+
+  // Since we are only checking for a few HTML elements I used a switch
+
+  for (var i = 0; i < temp.length; i++) {
+    switch (temp[i]) {
+      case '<':
+        temp[i] = '&lt;';
+        break;
+      case '&':
+        temp[i] = '&amp;';
+        break;
+      case '>':
+        temp[i] = '&gt;';
+        break;
+      case '"':
+        temp[i] = '&quot;';
+        break;
+      case "'":
+        temp[i] = '&apos;';
+        break;
+    }
+  }
+
+  temp = temp.join('');
+  return temp;
+}
+```
+
+##Another Solution
+```js
+function convert(str) {
+    
+    //map of key:value pairs
+    var html = {
+       "&":"&amp;",
+       "<":"&lt;",
+       ">":"&gt;",
+       "\"":"&quot;",
+       "\'":"&apos;"
+    };
+        str = str.replace(/&|<|>|"|'/gi, function(matched){
+        return html[matched];
+        });
+
+  return str;
+}
+```
+##Another Solution
+```js
+function convert(str) {
+//Chaining of replace method with different arguments
+  str = str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&apos;');
+return str;
+}
+```
+# Code Explanation:
+- Read comments in code.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @jhalls for your help with Bonfire: Convert HTML Entities`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-DNA-Pairing.md b/Algorithm-DNA-Pairing.md
new file mode 100644
index 0000000..2201dc9
--- /dev/null
+++ b/Algorithm-DNA-Pairing.md
@@ -0,0 +1,81 @@
+![](http://i.imgur.com/usiNBDU.jpg)
+
+# Problem Explanation:
+- You will get a DNA strand sequence and you need to get the pair and return it as a 2D array of the base pairs. Keep in mind that the provided strand should be first always.
+
+## Hint: 1
+- There are two base case, A-T and C-G, these go both way. You can use regular expression, if statements of anything that you can think of.
+
+## Hint: 2
+- I would recommend using a switch, as it makes things a lot smoother.
+
+## Hint: 3
+- The result must be an array of arrays, so keep that in mind when pushing things.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+### Solution 1
+```js
+function pair(str) {
+  // Return each strand as an array of two elements, the original and the pair.
+  var paired = [];
+
+  // Function to check with strand to pair.
+  var search = function(char) {
+    switch (char) {
+      case 'A':
+        paired.push(['A', 'T']);
+        break;
+      case 'T':
+        paired.push(['T', 'A']);
+        break;
+      case 'C':
+        paired.push(['C', 'G']);
+        break;
+      case 'G':
+        paired.push(['G', 'C']);
+        break;
+    }
+  };
+
+  // Loops through the input and pair.
+  console.log(char);
+  for (var i = 0; i < str.length; i++) {
+    search(str[i]);
+  }
+
+  return paired;
+}
+```
+# Code Explanation:
+- The program is very simple, the best solution that I have come up with is to use a switch to catch all the possible four elements. Using if statements would take too much code. You could also use Regular Expressions.
+- Since we have to the original and the pair, I decided to take all four cases instead of the base two.
+- Create an empty array and use the `search` function to push the right values to the array and return them.
+
+### Solution 2
+```js
+function pair(str) {
+  //define a map object with all pair possibilities 
+  var map = {T:'A', A:'T', G:'C', C:'G'};
+  //split str into a a char Array
+  strArr = str.split('');
+  //replace each Array item with a 2d Array using map
+  for (var i=0;i<strArr.length;i++){
+    strArr[i]=[strArr[i], map[strArr[i]]];
+  }
+ return strArr;
+}
+```
+
+# Code Explanation:
+- Read the comments
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @sabahang for your help with Bonfire: DNA Pairing`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Diff-Two-Arrays.md b/Algorithm-Diff-Two-Arrays.md
new file mode 100644
index 0000000..2dec4b8
--- /dev/null
+++ b/Algorithm-Diff-Two-Arrays.md
@@ -0,0 +1,81 @@
+![](http://i.imgur.com/HkEgef5.gif)
+
+# Explanation:
+Check two arrays and return a new array that contains only the items that are not in either of the original arrays.
+
+## Hint: 1
+- Merge the list to make it easy to compare functions.
+
+## Hint: 2
+- Use filter to get the new array, you will need to create a callback function.
+
+## Hint: 3
+- The best way to go about the callback function is to check if the number from the new merged array is not in **both** original arrays and return it.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function diff(arr1, arr2) {
+  var newArr = arr1.concat(arr2);
+
+  function check(item) {
+    if (arr1.indexOf(item) === -1 || arr2.indexOf(item) === -1) {
+      return item;
+    }
+  }
+
+  return newArr.filter(check);
+}
+```
+
+## Code Solution 2:
+
+```js
+function diff(arr1, arr2) {
+  // Same, same; but different.
+  var newArr = arr1.filter(function (el) {
+    return arr2.indexOf(el) === -1;
+    
+    // concat the previous output of filter method
+    // with the next output of filter method
+  }).concat(arr2.filter(function (el) {
+    return arr1.indexOf(el) === -1;
+  }));
+  return newArr;
+}
+```
+
+## Code Solution 3:
+
+```js
+// This solution runs two times faster than solutions 1 and 2
+function diff(arr1, arr2) {
+  var newArr = [];
+  // Looping through arr1 to find elements that do not exist in arr2  
+  for (var i = 0; i < arr1.length; i++) {
+    if (arr2.indexOf(arr1[i]) === -1){
+      // Pushing the unique to arr1 elements to the newArr
+      newArr.push(arr1[i]);
+    } 
+  }
+  // Looping through arr2 to find elements that do not exist in arr1
+  for (var j = 0; j < arr2.length; j++) {
+    if (arr1.indexOf(arr2[j]) === -1){
+      // Pushing the unique to arr2 elements to the newArr    
+      newArr.push(arr2[j]);
+    } 
+  }
+  
+  return newArr;
+}
+```
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @aganita for your help with Bonfire: Diff Two Arrays`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Drop-it.md b/Algorithm-Drop-it.md
new file mode 100644
index 0000000..4ddcf4e
--- /dev/null
+++ b/Algorithm-Drop-it.md
@@ -0,0 +1,78 @@
+![](http://i.imgur.com/goyTFy2.png)
+
+# Explanation:
+Basically while the second argument is not true, you will have to remove the first element from the left of the array that was passed as the first argument.
+
+## Hint: 1
+You can use Array.shift() or filter that you should be more familiar with to solve this problem in a few lines of code.
+
+## Hint: 2
+Shift returns the element that was removed which we don't really need, all we need is the modified array that is left.
+
+## Hint: 3
+If you still can't figure out how to solve it with shift, then try solving it with filter, and check how filter works, if you become familiar with it, then you can make the code with shift.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution 1:
+
+```js
+function drop(arr, func) {
+  // Drop them elements.
+  var times = arr.length;
+  for (var i = 0; i < times; i++) {
+    if (func(arr[0])) {
+      break;
+    } else {
+      arr.shift();
+    }
+  }
+  return arr;
+}
+drop([1, 2, 3], function(n) {return n < 3; });
+```
+
+# Code Explanation:
+- Create a for loop to check each element.
+- Then check for the function given if true then stop, otherwise remove that element.
+- return the array.
+
+
+## Code Solution 2:
+```js
+function drop(arr, func) {
+  return arr.slice(arr.findIndex(func) >= 0 ? arr.findIndex(func): arr.length, arr.length);
+}
+
+drop([1, 2, 3, 4], function(n) {return n >= 3;});
+```
+
+# Code Explanation:
+- Use ES6 `findIndex()` function to  find the index of the element that passes the condition
+- Slice the array from the found index until the end
+- There is one edge case! if the condition is not met against any of the elements 'findIndex' will return `-1` which messes up the input to `slice()`. In this case use a simple conditional operator to return `false` instead of `-1`. And the ternary operator (?:) returns the found index of required elements when the condition is `ture`, and the length of the array otherwise so that the return value is an empty array as is instructed. For more info see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator
+
+
+## Code Solution 3:
+```js
+function drop(arr, func) {
+  while(!func(arr[0])){
+    arr.shift();
+  }
+  return arr;
+}
+
+drop([1, 2, 3], function(n) {return n < 3; });
+```
+
+# Code Explanation
+- Use a while loop with `Array.shift()` to continue checking and dropping the first element of the array until the function returns true.
+- Return the trimmed array.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @sabahang for your help with Bonfire: Drop it`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Everything-be-True.md b/Algorithm-Everything-be-True.md
new file mode 100644
index 0000000..c56825b
--- /dev/null
+++ b/Algorithm-Everything-be-True.md
@@ -0,0 +1,76 @@
+![](http://i.imgur.com/oKEJJJI.jpg)
+
+# Explanation:
+The program needs to check if the second argument is a [truthy](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/js-truthy) element, and it must check this for each object in the first argument.
+
+### Hint: 1
+Remember to iterate through the first argument to check each object.
+
+### Hint: 2
+Only if all of them are truth will we return true, so make sure all of them check.
+
+### Hint: 3
+You could use loops or callbacks functions, there are multiple ways to solve this problem.
+
+### Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solutions ahead!**
+
+## Code Solution using for-in loop & hasOwnProperty:
+
+```js
+function every(collection, pre) {
+  // Create a counter to check how many are true.
+  var counter = 0;
+  // Check for each object
+  for (var c in collection) {
+    // If it is has property and value is truthy
+    if (collection[c].hasOwnProperty(pre) && Boolean(collection[c][pre])) {
+      counter++;
+    }
+  }
+  // Outside the loop, check to see if we got true for all of them and return true or false
+  return counter == collection.length;
+}
+```
+
+### Code Explanation:
+- First I create a counter to check how many cases are actually true.
+- Then check for each object if the value is truthy
+- Outside the loop, I check to see if the counter variable has the same value as the length of **collection**, if true then return **true**, otherwise, return **false**
+
+##  Code Solution using Array.every():
+```js
+function every(collection, pre) {
+  return collection.every(function (element) {
+    return element.hasOwnProperty(pre) && Boolean(element[pre]);
+  });
+}
+```
+
+### Code Explanation:
+- Uses the native "every" method to test whether all elements in the array pass the test.
+- This link will help [Array.prototype.every()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every)
+
+## Code solution using Array.reduce:
+```js
+function every(collection, pre) {
+    return collection.reduce(function(acc, next) {
+        if (next[pre]) {
+            return acc;
+        } else {
+            acc = false;
+            return acc;
+        }
+    },true);
+```
+
+### Code Explanation:
+- Set initial reduce value to true.
+- Change it to false only when there is no key of a given name or it's falsy. Otherwise stick to the initial truthy value. 
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @estevanmaito @HermanFassett for your help with Bonfire: Everything  Be True`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Exact-Change.md b/Algorithm-Exact-Change.md
new file mode 100644
index 0000000..60528f0
--- /dev/null
+++ b/Algorithm-Exact-Change.md
@@ -0,0 +1,90 @@
+# Problem Explanation:
+- You have to create a program that will handle when the register does not have enough cash or will have no cash after the transaction. Other than that it needs to return an array of the change in the form of an array, so that will be a 2D array.
+
+## Hint: 1
+- Is easier to handle if you will have to close the register or if you will not have enough money to complete the transaction if you know beforehand how much money is on your register. For this it would be recommended to have a function get the information assigned to a variable.
+
+## Hint: 2
+- Life is easier when you get to know the value of each currency type in the register instead of how much money is composed of that particular currency. So be sure to watch out for that.
+
+## Hint: 3
+- You will have to get as much change from one type before moving to the next from greater value to lesser, and keep going until you have covered the whole change.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+// Create an object which hold the denominations and their values
+var denom = [
+	{ name: 'ONE HUNDRED', val: 100.00},
+	{ name: 'TWENTY', val: 20.00},
+	{ name: 'TEN', val: 10.00},
+	{ name: 'FIVE', val: 5.00},
+	{ name: 'ONE', val: 1.00},
+	{ name: 'QUARTER', val: 0.25},
+	{ name: 'DIME', val: 0.10},
+	{ name: 'NICKEL', val: 0.05},
+	{ name: 'PENNY', val: 0.01}
+];
+
+function drawer(price, cash, cid) {
+    var change = cash - price;
+
+    // Transform CID array into drawer object
+    var register = cid.reduce(function(acc, curr) {
+        acc.total += curr[1];
+        acc[curr[0]] = curr[1];
+        return acc;
+    }, {total: 0});
+    
+    // Handle exact change
+    if(register.total === change) {
+        return 'Closed';
+    }
+    
+    // Handle obvious insufficent funds
+    if(register.total < change) {
+        return 'Insufficient Funds';
+    }
+    
+    // Loop through the denomination array
+    var change_arr = denom.reduce(function(acc, curr) {
+        var value = 0;
+        // While there is still money of this type in the drawer
+        // And while the denomination is larger than the change reminaing
+        while(register[curr.name] > 0 && change >= curr.val) {
+            change -= curr.val;
+            register[curr.name] -= curr.val;
+            value += curr.val;
+            
+            // Round change to the nearest hundreth to deal with precision errors
+            change = Math.round(change * 100) / 100;
+        }
+        // Add this denomination to the output only if any was used.
+        if(value > 0) {
+            acc.push([ curr.name, value ]);
+        }
+        return acc; // Return the current Change Array
+    }, []); // Initial value of empty array for reduce
+  
+  // If there are no elements in change_arr or we have leftover change, return "Insufficient Funds"
+  if(change_arr.length < 1 || change > 0) {
+    return "Insufficient Funds";
+  }
+    
+  // Here is your change, ma'am.
+  return change_arr;
+}
+```
+
+# Code Explanation:
+- Read comments in code.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @SaintPeter for your help with Bonfire: Exact Change`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Factorialize-a-Number.md b/Algorithm-Factorialize-a-Number.md
new file mode 100644
index 0000000..1db09b4
--- /dev/null
+++ b/Algorithm-Factorialize-a-Number.md
@@ -0,0 +1,89 @@
+# Problem Explanation:
+Return the factorial of the provided integer. If the integer is represented with the letter n, a factorial is the product of all positive integers less than or equal to n.
+
+Factorials are often represented with the shorthand notation n!
+
+For example: `5! = 1 * 2 * 3 * 4 * 5 = 120`
+
+## Outline
+This one starts easily since `0! = 1`, so you can go ahead and simply `return 1` there.
+
+We can use that as an `if` in order to break the loop we're going to create using a **recursive function**. It will check if the number you gave the function is 0 (which would be the end of your factorial chain). Functions "end" when they return anything. In fact, **all** functions without an explicit `return` statement will return `undefined`.
+
+This is also why **instead** of having *"finished"*, a function is always said to *"have returned"*. And now this...
+
+## Understanding recursion
+Recursion refers to a function repeating (calling) itself. In this case we are basically returning the given number (i.e. 5), multiplied by the function itself but this time the value passed to the _num_ parameter is `num-1` (which initially translates to 4). The very function is going to **run inside itself** interesting, eh?
+
+# Understanding the flow
+The first **returned** value can be visualized better if you think about those parenthesis operations you did in secondary school where you do the math inside every parenthesis from inside out, bracket and square bracket until you get a final result (a total). This time it's the same thing, look at the program flow:
+
+### During the first execution of the function:
+[**num** = 5]
+
+Is 5 _equal_ to 1 or 0? **No** ---> Oki doki, let's continue...
+
+**Returns:**
+
+(**5** _ (_second execution_: **4** _ (_third execution_: **3** _ (_fourth execution_: **2** _ _fifth execution_: **1**))))
+
+What it returns can be viewed as `(5*(4*(3*(2*1))))` or just `5 * 4 * 3 * 2 * 1`, and the function will return the result of that operation: `120`. Now, let's check what the rest of the executions do:
+
+### During the rest of the executions:
+**Second Execution**: 
+_num_ = 5-1 = **4** -> is _num_ 0 or 1? No<br>
+--> return the multiplication between 4 and the next result when _num_ is now 4-1.
+
+**Third Execution**: _num_ = 4 - 1 = **3** -> is _num_ 0 or 1? No<br>
+--> return the multiplication between 3 and the next result when _num_ is now 3-1.
+
+**Fourth Execution**: _num_ = 3-1 = **2** -> is _num_ 0 or 1? No<br>
+--> return the multiplication between 2 and the next result when _num_ is now 2-1.
+
+**Fifth Execution**: _num_ = 2-1 = **1** -> is _num_ 0 or 1? Yep<br>
+--> return **1**. And this is where the recursion stops because there are no more executions.
+
+Got it? ;)
+
+![Recursion](http://i61.tinypic.com/28auvsw.jpg)
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```javascript
+function factorialize(num) {
+  if (num === 0) { return 1; }
+  return num * factorialize(num-1);
+}
+
+factorialize(5);
+```
+
+# References
+- **Recursion**: [https://www.codecademy.com/courses/javascript-lesson-205/0/1](https://www.codecademy.com/es/courses/javascript-lesson-205/0/1)
+- **Factorialization**: [https://en.wikipedia.org/wiki/Factorial](https://en.wikipedia.org/wiki/Factorial)
+- **Arithmetic Operators** [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators)
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @luishendrix92 @Rafase282 @hallaathrad for your help with Bonfire: Factorialize a Number`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
+
+```
+           ,,,         ,,,
+          ;"   ^;     ;'   ",
+          ;    s$$$$$$$s     ;
+          ,  ss$$$$$$$$$$s  ,'
+          ;s$$$$$$$$$$$$$$$
+          $$$$$$$$$$$$$$$$$$
+         $$$$P""Y$$$Y""W$$$$$      -{ Happy Camping! }
+         $$$$  p"$$$"q  $$$$$
+         $$$$  .$$$$$.  $$$$
+          $$DcaU$$$$$$$$$$
+            "Y$$$"*"$$$Y"    
+                "$b.$$"
+```
diff --git a/Algorithm-Falsy-Bouncer.md b/Algorithm-Falsy-Bouncer.md
new file mode 100644
index 0000000..9c26075
--- /dev/null
+++ b/Algorithm-Falsy-Bouncer.md
@@ -0,0 +1,48 @@
+![](http://i.imgur.com/GluUbAz.jpg)
+
+# Problem Explanation:
+Remove all [falsy](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/js-falsy) values from an array.
+
+## Hint: 1
+Falsy is something which evaluates to FALSE. There are only six falsy values in JavaScript: undefined, null, NaN, 0, "" (empty string), and false of course.
+
+## Hint: 2
+We need to make sure we have all the falsy values to compare, we can know it, maybe with a function with all the falsy values...
+
+## Hint: 3
+Then we need to add a `filter()` with the falsy values function...
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Solution Code:
+
+```js
+function bouncer(arr) {
+  // Don't show a false ID to this bouncer.
+  // I've a hammer fist.
+
+  return arr.filter(Boolean);
+}
+```
+
+```js
+function bouncer(arr) {
+  function isTruthy(arg) {
+    return Boolean(arg);
+  }
+
+  var filteredArray = arr.filter(isTruthy);
+  return filteredArray;
+}
+```
+
+# Code Explanation:
+The `Array.prototype.filter` method expects a function that returns a `Boolean` value which takes a single argument and returns `true` for [truthy](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/js-truthy) value or `false` for [falsy](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/js-falsy) value. Hence we pass the built-in `Boolean` function.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @renelis @abhisekp @Rafase282 for your help with Bonfire: Falsy Bouncer`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Find-The-Longest-Word-in-a-String.md b/Algorithm-Find-The-Longest-Word-in-a-String.md
new file mode 100644
index 0000000..58b17ac
--- /dev/null
+++ b/Algorithm-Find-The-Longest-Word-in-a-String.md
@@ -0,0 +1,94 @@
+# Explanation:
+You have to go through each word and figure out which one is the longest and return not the word, but how many characters it has.
+
+## Hint: 1
+You should split the string into an array of words.
+
+## Hint: 2
+You will need to figure out a way to keep track globally of the greatest current length.
+
+## Hint: 3
+Remember how to get the length of elements on the array? `Array[index].length`
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+####First solution
+```js
+function findLongestWord(str) {
+  var words = str.split(' ');
+  var maxLength = 0;
+
+  for (var i = 0; i < words.length; i++) {
+    if (words[i].length > maxLength) {
+      maxLength = words[i].length;
+    }
+  }
+
+  return maxLength;
+}
+```
+
+####Second solution 
+(Using `.reduce()`)
+```js
+function findLongestWord(s) {
+  return s.split(' ')
+          .reduce(function(x,y) {
+                    return Math.max(x, y.length)
+                  }, 0);
+}
+```
+
+#### Third solution
+(Using recursiveness)
+```js
+function findLongestWord(str) {
+
+  //split the string into individual words 
+  //(important!!, you'll see why later)
+  str = str.split(" ");
+  
+  //str only has 1 element left that is the longest element, 
+  //return the length of that element
+  if(str.length == 1){
+    return str[0].length;
+  }
+  
+  //if the first element's length is greater than the second element's (or equal) 
+  //remove the second element and recursively call the function)
+  if(str[0].length >= str[1].length){
+    str.splice(1,1);
+    return findLongestWord(str.join(" "));
+  }
+  
+  //if the second element's length is greater thant the first element's start 
+  //call the function past the first element 
+  if(str[0].length <= str[1].length){
+    // from the first element to the last element inclusive.
+    return findLongestWord(str.slice(1,str.length).join(" "));
+  }
+}
+```
+
+# Code Explanation:
+####First solution
+Take the string and convert it into an array of words. Declare a variable to keep track of the maximum length and loop from 0 to the length of the array of words.
+
+Then check for the longest word by comparing the current word to the previous one and storing the new longest word. At the end of the loop just return the number value of the variable maxLength.
+
+####Second solution
+For more information on `reduce` [click here.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)<br>
+In case you're wondering about that `0` after the callback function, it is used to give an initial value to the `x`, so that `Math.max` will know where to start.
+
+####Third solution
+See the code's inline comments.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @shadowfool @Hallaathrad for your help with Bonfire: Find the Longest Word in a String`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Finders-Keepers.md b/Algorithm-Finders-Keepers.md
new file mode 100644
index 0000000..ca96e4a
--- /dev/null
+++ b/Algorithm-Finders-Keepers.md
@@ -0,0 +1,62 @@
+# Explanation:
+The problem is quite simple to understand. You will check for each element in the array that is passed in the first argument, if the element plugged in to the function passed as the second argument returns true the first time. We do not care about the second or third one that is true, only the very first one if any. If there are none, then return undefined. This last bit is not explained but it is part of the tests used.
+
+## Hint: 1
+You can use the function directly from the parameter, no need to rename it or anything.
+
+## Hint: 2
+You need to pass an element and record it if the function returns true, for this you just have to pass the element as the parameter for the function.
+
+## Hint: 3
+If no element satisfy the function then you must return **undefined**
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function find(arr, func) {
+  // Make num undefined by default
+  var num;
+
+  // Loop thorugh the array and use the function to check
+  for (var a = 0; a < arr.length; a++) {
+    if (func(arr[a])) {
+      // Store the first case and break the loop
+      num = arr[a];
+      return num;
+    }
+  }
+
+  // otherwise return undefined
+  return num;
+}
+
+find([1, 2, 3, 4], function(num) {
+  return num % 2 === 0;
+});
+```
+
+## Another Code Solution:
+```js
+function find(arr, func) {
+  filterArr = arr.filter(func); //filter array with the function provided
+  
+  return filterArr[0]; //return the first element that returns true, or undefined if no elements return true
+}
+
+find([1, 2, 3, 4], function(num){ return num % 2 === 0; });
+```
+# Code Explanation:
+- To make the code easier, create an undefined variable that will be returned.
+- Loop through the array to check for each element if it satisfy the function. This is done by passing the arr[index of the loop] as the parameter for the function from the second argument.
+- If true, then store the array element, and return it. This will stop the loop. No else needed.
+- If the loop was not broken and it has ended, then return **num** which by default is undefined. This means that none of the elements from the array satisfied the function.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @JamesKee for your help with Bonfire: Finders Keepers`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Friendly-Date-Ranges.md b/Algorithm-Friendly-Date-Ranges.md
new file mode 100644
index 0000000..77705b9
--- /dev/null
+++ b/Algorithm-Friendly-Date-Ranges.md
@@ -0,0 +1,119 @@
+# Problem Explanation:
+- Create a program that will take two dates and convert them into a more easy to understand date such as `January 1st, 2017`. It will also check the difference between them, and handles cases with no difference, more than a day, more than a month, more than a year, and more than a month and less than a year respectively.
+
+## Hint: 1
+- Split the string into an array where you get the "YYYY", "MM", "DD"
+
+## Hint: 2
+- You need to handle the case for "st", "nd", and "th". Note that 13 is "th" not "rd".
+
+## Hint: 3
+- If you are using `Date()` to create instances of dates to work with, then use UTC time to avoid errors due to time zone difference between servers.
+
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function friendly(str) {
+
+  var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
+
+  // COnverst a YYYY-MM-DD string into a date object.
+  function convertDate(str) {
+    // Split the dates to work independently.
+    var dateStr = str.split('-');
+
+    // Force the dates into Universal time to avoid issues due to timezones.
+    return (new Date(Date.UTC(dateStr[0], dateStr[1] - 1, dateStr[2])));
+
+  }
+
+  // Handles the case of the day's endings.
+  function dateEnding(val) {
+    switch (val) {
+      case 1:
+      case 21:
+      case 31:
+        return val + 'st';
+      case 2:
+      case 22:
+        return val + 'nd';
+      case 3:
+      case 23:
+        return val + 'rd';
+      default:
+        return val + 'th';
+    }
+  }
+
+  // Checks for the real difference in months to avoid errors
+  function monthDiff(date1, date2) {
+    var month2 = date2.getUTCFullYear() * 12 + date2.getUTCMonth();
+    var month1 = date1.getUTCFullYear() * 12 + date1.getUTCMonth();
+    return month2 - month1;
+  }
+  
+  //day diff
+  function dayDiff(date1, date2) {
+    if(date2.getUTCMonth() === date1.getUTCMonth()){
+      return date1.getUTCDate()-date2.getUTCDate();
+    }
+    return 0;
+  }
+
+  // Get's the right month string.
+  function getMonth(date) {
+    return months[date.getUTCMonth()];
+  }
+
+  function displayDate() {
+
+    // Handles same day
+    if (date2.getTime() - date1.getTime() === 0) {
+      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate()) + ', ' + date1.getUTCFullYear()];
+    }
+
+    // Handles same month
+    if (date1.getUTCMonth() === date2.getUTCMonth() && date1.getUTCFullYear() === date2.getUTCFullYear()) {
+      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate()), dateEnding(date2.getUTCDate())];
+    }
+    
+    // Handles more than a month of difference, but less than 12 months and different year
+    if (monthDiff(date1, date2) < 12 && date1.getUTCFullYear() !== date2.getUTCFullYear() ) {
+      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate()), getMonth(date2) + ' ' + dateEnding(date2.getUTCDate())];
+    }
+
+    // Handles same month but different year
+    if (monthDiff(date1, date2) <= 12 && dayDiff(date1, date2)>0) {
+      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate())+', '+date1.getUTCFullYear(), getMonth(date2) + ' ' + dateEnding(date2.getUTCDate())];
+    }
+    
+    // Handles more than a month of difference, but less than 12 months and same year
+    if (monthDiff(date1, date2) < 12) {
+      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate())+', '+date1.getUTCFullYear(), getMonth(date2) + ' ' + dateEnding(date2.getUTCDate())];
+    }
+
+    // Handles cases with more than 12 months apaprt.
+    return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate()) + ', ' + date1.getUTCFullYear(), getMonth(date2) + ' ' + dateEnding(date2.getUTCDate()) + ', ' + date2.getUTCFullYear()];
+  }
+
+  var date1 = convertDate(str[0]);
+  var date2 = convertDate(str[1]);
+
+  return displayDate();
+
+}
+```
+
+# Code Explanation:
+- Read comments in code
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @guyjoseph for your help with Bonfire: Friendly Date Ranges`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Inventory-Update.md b/Algorithm-Inventory-Update.md
new file mode 100644
index 0000000..1dc80c2
--- /dev/null
+++ b/Algorithm-Inventory-Update.md
@@ -0,0 +1,159 @@
+# Problem Explanation:
+- Look through an array of new products, in the format: `[quantity, name]`
+- Return an array containing updated quantities for each item that already existed, and any new products
+
+## Hint: 1
+- You need to work through each item of the new inventory to see if it exists in the current inventory or not.
+- Remember that the product name is stored as the second element of each sub-array: `arr2[0][1] = "Bowling Ball"`
+
+## Hint: 2
+- If the item exists, you need to add the quantity from the new inventory
+- If the item doesn't exist, you need to add the entire item
+
+## Hint: 3
+- Return the completed inventory in alphabetical order
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+#### First solution
+```js
+function inventory(arr1, arr2) {
+
+    // Variable for location of product
+    var index;
+
+    // A helper method to return the index of a specified product (undefined if not found)
+    var getProductIndex = function (name) {
+        for (var i = 0; i < this.length; i++) {
+            if (this[i][1] === name) {
+                return i;
+            }
+        }
+        return undefined;
+    }
+
+    // For each item of the new Inventory
+    for (var i = 0; i < arr2.length; i++) {
+
+        // Invoke our helper function using arr1 as this
+        index = getProductIndex.call(arr1, arr2[i][1]);
+
+        // If the item doesn't exist
+        if (index === undefined) {
+            // Push the entire item
+            arr1.push(arr2[i]);
+        } else {
+            // Add the new quantity of the current item
+            arr1[index][0] += arr2[i][0];
+        }
+
+    }
+
+    // Sort alphabetically, by the product name of each item
+    arr1.sort(function (a, b) {
+        if (a[1] > b[1]) {
+            return 1;
+        }
+        if (a[1] < b[1]) {
+            return -1;
+        }
+        return 0;
+    });
+
+    return arr1;
+}
+```
+#### Second solution
+```js
+function inventory(arr1, arr2) {
+  // All inventory must be accounted for or you're fired!
+
+  var index;
+  var arrCurInvName = []; // Names of arr1's items
+  var arrNeInvName = []; // Names of arr2's items
+
+  // Same as using two for loops, this takes care of increasing the number of stock quantity.
+  arr1.map(function(item1) {
+    return arr2.map(function(item2) {
+      if (item1[1] === item2[1]) {
+        item1[0] = item1[0] + item2[0]; //Increase number of stock
+      }
+    });
+  });
+
+  // Get item's name for new Inventory
+  arr2.map(function(item) {
+    arrNeInvName.push(item[1]);
+  });
+
+  // Get item's name for Current Inventory
+  arr1.map(function(item) {
+    arrCurInvName.push(item[1]);
+  });
+
+  // Add new inventory items to current inventory.
+  arrNeInvName.map(function(item) {
+    if (arrCurInvName.indexOf(item) === -1) {
+      index = arrNeInvName.indexOf(item);
+      arr1.push(arr2[index]);
+    }
+  });
+
+  // Sort the array alphabetically using the second element of the array as base.
+  arr1.sort(function(currItem, nextItem) {
+
+    //Ternary function to avoid using if else
+    return currItem[1] > nextItem[1] ? 1 : -1;
+  });
+
+  return arr1;
+}
+```
+
+#### Third solution
+```js
+function inventory(arr1, arr2) {
+  var flag=0;
+  arr2.forEach(function(item){
+    flag=0;
+    arr1.forEach(function(list){
+        //If the product is already present, increase the quantity
+      if(item[1]===list[1]){ list[0]+=item[0]; flag=1;}
+    });
+    //If not already present, add the product
+    if(flag===0) arr1.push(item);
+  });
+  //Return the sorted inventory in alphabetical order wrt product name
+    return arr1.sort(function(a, b) { 
+    return a[1] > b[1] ? 1 : -1;
+});
+}
+```
+# Code Explanation:
+#### First solution
+- Start by creating a variable to store the index in.  Define variables outside of loops
+- Create a helper function to find the index of a product name
+- The helper function iterates through each element of the array that it is called on, until it can either find the name parameter, or if it cannot find it then returns undefined
+- Then, work through each item in the delivery, and set index to the result of invoking our helper function on the current inventory (IE: Search the new inventory for that product name, and return it's index)
+- If we can't find that product, then we can add the entire product (Name and quantity) to the current inventory
+- Otherwise, then we can add the quantity from the new inventory
+- Then we sort the array by the product name (`arr1[x][1]` holds the name)
+- Return the sorted array
+- For Solution two, the explanation is on the code. Feel free to use different components on each solution to create your own if you like.
+
+#### Second and Third solutions
+- Read comments in code.
+
+## Related links
+- [Function.prototype.call](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)
+- [Array.prototype.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @guyjoseph @Rafase282 @anuragaryan for your help with Bonfire: Inventory Update`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
+
diff --git a/Algorithm-Make-a-Person.md b/Algorithm-Make-a-Person.md
new file mode 100644
index 0000000..ac1d56e
--- /dev/null
+++ b/Algorithm-Make-a-Person.md
@@ -0,0 +1,68 @@
+# Explanation:
+When I started the program I figured I just had to create the six functions mentioned in the details. However, it was not that simple. Creating them as a function was not the right way, I had to create them in a different way to make them a key.
+
+There is also a tricky part as you need six keys no more or less, so at first I had the variable that store the original name as a key too which was wrong.
+
+As for the usage of array, that is optional, you could also create new variable to hold the separated string if you wish but an array is easier to deal with as strings are immutable.
+
+Read the instructions carefully, it is always a good hint in itself to run the code and check what the test results were so you know what to expect but do not fixate yourself on that. Once you understand what you need to do, this problem is very easy and straightforward.
+
+## Hint: 1
+Use the **this** notation to create the keys instead of regular functions: This means instead of `var varName = function() {/*...*/}` you should use `this.varName = function() {/*...*/}`
+
+## Hint: 2
+The program has a test that checks for how many keys you used, they have to be exactly six, the six mentioned in the details section. This means if you need to work with variables, make them local and not a key: `this.fullName = firstAndLast;`
+
+## Hint: 3
+Often the code would not work the way you expect it due to wrong variable names, make sure to check that you spell them the right way. This happens to all of us at some point.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+Please try hard before you check this solution.
+
+```js
+var Person = function(firstAndLast) {
+  var fullName = firstAndLast;
+
+  this.getFirstName = function() {
+    return fullName.split(" ")[0];
+  };
+
+  this.getLastName = function() {
+    return fullName.split(" ")[1];
+  };
+
+  this.getFullName = function() {
+    return fullName;
+  };
+
+  this.setFirstName = function(name) {
+    fullName = name + " " + fullName.split(" ")[1];
+  };
+
+  this.setLastName = function(name) {
+    fullName = fullName.split(" ")[0] + " " + name;
+  };
+  
+  this.setFullName = function(name) {
+    fullName = name;
+  };
+};
+
+var bob = new Person('Bob Ross');
+bob.getFullName();
+```
+
+# Code Explanation:
+- Create a variable that will make a copy of the full name that was passed as a parameter.
+- Then we can proceed to create the six methods needed and return what is asked for.
+- For the individual setters, we can use the split to turn the fullname into an array of first and last names and concatenate the unchanged portion of the name with what was passed as a parameter.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @ltegman for your help with Bonfire: Make a Person`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Map-the-Debris.md b/Algorithm-Map-the-Debris.md
new file mode 100644
index 0000000..b623da1
--- /dev/null
+++ b/Algorithm-Map-the-Debris.md
@@ -0,0 +1,103 @@
+![](http://i.imgur.com/jSJ4E7L.jpg)
+
+# Problem Explanation:
+The first thing to do is to get familiar with what the program is for, for this I would suggest you check the Wikipedia link as that is very important and from where you can also get the formula for the conversion. The hardest part are finding the formula, implementing it and for some modifying objects by the key. However, something that is not very clear is the fact that your program has to be able to check for any number of objects in the array which is what is tested on the second part.
+
+## Hint: 1
+The formula needed is: T = 2_pi _ sqrt(earthRadius + avgAlt to the cube / GM)
+
+## Hint: 2
+Use Math.round() to round up to the next whole number as requested. Using Math.ceil() will let you pass the first test but fail the second one.
+
+## Hint: 3
+Find out how to remove and add key to an object
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+#### First solution
+
+```js
+function orbitalPeriod(arr) {
+  var GM = 398600.4418;
+  var earthRadius = 6367.4447;
+  var a = 2 * Math.PI;
+  var newArr = [];
+  var getOrbPeriod = function(obj) {
+    var c = Math.pow(earthRadius + obj.avgAlt, 3);
+    var b = Math.sqrt(c / GM);
+    var orbPeriod = Math.round(a * b);
+    delete obj.avgAlt;
+    obj.orbitalPeriod = orbPeriod;
+    return obj;
+  };
+
+  for (var elem in arr) {
+    newArr.push(getOrbPeriod(arr[elem]));
+  }
+
+  return newArr;
+}
+```
+
+#### Second solution
+
+```js
+function orbitalPeriod(arr) {
+  var GM = 398600.4418;
+  var earthRadius = 6367.4447;
+  
+  //Looping through each key in arr object
+  for(var prop in arr){
+    //formula  of orbital period https://en.wikipedia.org/wiki/Orbital_period here a = avgAlt+earthRadius
+    //Rounding off the orbital period value 
+  var orbitalPer = Math.round(2*Math.PI*Math.sqrt(Math.pow(arr[prop].avgAlt+earthRadius,3)/GM));
+  //deleting the avgAlt property 
+  delete arr[prop].avgAlt;
+  //adding orbitalPeriod property
+  arr[prop].orbitalPeriod = orbitalPer;
+  }
+  return arr;
+}
+orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]);
+```
+
+#### Third solution
+```js
+function orbitalPeriod(arr) {
+  var GM = 398600.4418;
+  var earthRadius = 6367.4447;
+  // Loop through each item in the array arr
+  arr.forEach(function(item){
+    // Calculate the Orbital period value
+    var tmp= Math.round(2*Math.PI*Math.sqrt(Math.pow(earthRadius+item.avgAlt,3)/GM));
+    //Delete the avgAlt property
+    delete item.avgAlt;
+    //Add orbitalPeriod property
+    item.orbitalPeriod=tmp;
+  });
+  return arr;
+}
+```
+# Code Explanation:
+#### First solution
+- The GM and `earthRadius` is given to us.
+- To make the code easier to edit and read, I separated each part of the equation.
+- Create a new array to store the `orbPeriods`.
+- a is 2 times pi. The part that is a constant is on the global scope while the rest is part of a function.
+- Create a function that will do the required work for any amount of objects.
+- c is the power of `earthRadius` + the value of `avgAlt` to the cube.
+- b is the square root of c divided by GM.
+- Create `orbPeriod` to store the product of a & b, with the ceiling function applied to round up to the next whole number.
+- Then we delete the key`avgAlt`, and add the new key and its value.
+
+#### Second and Third solutions
+- Read comments in code.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @coded9 @anuragaryan for your help with Bonfire: Map the Debris`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Meet-Algorithm.md b/Algorithm-Meet-Algorithm.md
new file mode 100644
index 0000000..8390146
--- /dev/null
+++ b/Algorithm-Meet-Algorithm.md
@@ -0,0 +1,37 @@
+# Explanation:
+This is very simple, they just want you to get familiar with how their Bonfires work.
+
+## Hint: 1
+Read details.
+
+## Hint: 2
+Did you read all the details?
+
+## Hint: 3
+You need to change the return statement to what they ask.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function meetBonfire(argument) {
+  // Good luck!
+  console.log("you can read this function's argument in the developer tools", argument);
+
+  return true;
+}
+
+meetBonfire("You can do this!");
+```
+
+# Code Explanation:
+All you had to do was change from false to true.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 for your help with Bonfire: Meet Bonfire`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Missing-letters.md b/Algorithm-Missing-letters.md
new file mode 100644
index 0000000..618cdae
--- /dev/null
+++ b/Algorithm-Missing-letters.md
@@ -0,0 +1,151 @@
+# Problem Explanation:
+- You will create a program that will find the missing letter from a string and add it. If there is not missing letter it will return undefined. There is currently no test case for it missing more than one letter, but if anything recursion can be implemented or a second or more calls to the same function as needed. Also the letters are always provided in order so there is no need to sort them.
+
+## Hint: 1
+- You will need to convert from character to ASCII code using the two methods provided in the description.
+
+## Hint: 2
+- You will have to check for the difference in ASCII code as they are in order. Using a chart would be very helpful.
+
+## Hint: 3
+- You will need to figure out where to insert the letter and how to do it, along with handling the case that there is not missing letter as it needs an specific return value.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+####First solution:
+
+```js
+function fearNotLetter(str) {
+  // Create our variables.
+  var firstCharacter = str.charCodeAt(0);
+  var valueToReturn = '';
+  var secondCharacter = '';
+
+  // Function to find the missing letters
+  var addCharacters = function(a, b) {
+    while (a - 1 > b) {
+      b++;
+      valueToReturn += String.fromCharCode(b);
+    }
+    return valueToReturn;
+  };
+
+  // Check if letters are missing in between.
+  for (var index = 1; index < str.length; index++) {
+    secondCharacter = str.charCodeAt(index);
+
+    // Check if the diference in code is greater than one.
+    if (secondCharacter - firstCharacter > 1) {
+      // Call function to missing letters
+      addCharacters(secondCharacter, firstCharacter);
+    }
+
+    // Switch positions
+    firstCharacter = str.charCodeAt(index);
+  }
+
+  // Check whether to return undefined or the missing letters.
+  if (valueToReturn === '')
+    return undefined;
+  else
+    return valueToReturn;
+}
+```
+
+####Second solution:
+
+```js
+function fearNotLetter(str) {
+  
+  for(var i = 0; i < str.length; i++) {
+    /* code of current character */
+    var code = str.charCodeAt(i);
+    
+    /* if code of current character is not equal to first charcter + no of iteration
+    hence character has been escaped*/
+    if ( code !== str.charCodeAt(0) + i) {
+    
+      /* if current character has escaped one character find previous char and return*/
+      return String.fromCharCode(code-1);
+    }  
+  }
+  return undefined;
+}
+```
+
+####Third solution (Declarative)
+```js
+// Adding this solution for the sake of avoiding using 'for' and 'while' loops.
+// See the explanation for reference as to why. It's worth the effort.
+
+function fearNotLetter(str) {
+  var compare = str.charCodeAt(0), missing;
+  
+  str.split('').map(function(letter,index){
+    if (str.charCodeAt(index) == compare) { ++compare; }
+    else { missing = String.fromCharCode(compare); }
+  });
+  
+  return missing;
+}
+```
+
+####Fourth solution:
+```js
+function fearNotLetter(str) {
+  var strArr = str.split('');
+  var missingChars = [], i = 0;
+  var nextChar = String.fromCharCode(strArr[i].charCodeAt(0)+1);
+  while (i<strArr.length - 1) {
+    if (nextChar !== strArr[i+1]){
+      missingChars.push(nextChar);
+      nextChar = String.fromCharCode(nextChar.charCodeAt(0)+1);
+    } else {
+      i++;
+      nextChar = String.fromCharCode(strArr[i].charCodeAt(0)+1);
+    }
+  }
+  return missingChars.join('') === '' ? undefined : missingChars.join('') ;
+}
+```
+
+####Fifth solution:
+```js
+function fearNotLetter(str) {
+  var allChars = '';
+  var notChars = new RegExp('[^'+str+']','g');
+  for (var i=0;allChars[allChars.length-1] !== str[str.length-1] ;i++)
+    allChars += String.fromCharCode(str[0].charCodeAt(0)+i);
+  return allChars.match(notChars) ? allChars.match(notChars).join('') : undefined;
+}
+```
+# Code Explanation:
+####First and second solutions:
+- Read comments in code.
+
+####Third solution (Declarative):
+- First we define variables to store the character code for the first letter in the string, and to store whatever missing letters we may find.
+- We turn the string to an array in order to map through it instead of using those nasty `for` and `whiles` (See [this article](http://www.sitepoint.com/quick-tip-stop-writing-loops-start-thinking-with-maps/) for refence as to why. And give it a serious try. Really... you'll thank me for it.
+(If you're not sure how to `map`, you can review [Waypoint: Iterate over arrays with map] ](http://www.freecodecamp.com/challenges/waypoint-iterate-over-arrays-with-map) and [MDN's reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)).
+- As we `map` through our letters' character codes, we go comparing with the one that should be in that position.
+- If the current letter matches, we move the comparison variable to its next position so we can compare on the next cycle.
+- if not, the missing letter will be assigned to the `missing` variable, which will be returned after the map is finished.
+
+####Fourth solution:
+- Increase loop index only when you have found all the missing letters between current and next letter
+- Every time you find a missing letter push it to `missingchars`
+
+####Fifth solution:
+- Create a new String that consists all the letters in the range
+- Create a Regular Expression for anything except `str`
+- Use `match()` to strip off the `str` letters from your newly created String
+
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @rohitnwn @sabahang @Hallaathrad for your help with Bonfire: Missing Letters`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Mutations.md b/Algorithm-Mutations.md
new file mode 100644
index 0000000..4c4d040
--- /dev/null
+++ b/Algorithm-Mutations.md
@@ -0,0 +1,63 @@
+# Problem Explanation:
+- Return true if the string in the first element of the array contains all of the letters of the string in the second element of the array..
+
+## Hint: 1
+- If everything is lowercase it will be easier to compare.
+
+## Hint: 2
+- Our strings might be easier to work with if they were arrays of characters.
+
+## Hint: 3
+- A loop might help. Use `indexOf()` to check if the letter of the second word is on the first.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+# Code Solutions:
+
+####First solution (Procedural):
+```js
+function mutation(arr) {
+  var test = arr[1].toLowerCase();
+  var target = arr[0].toLowerCase();
+  for (i=0;i<test.length;i++) {
+    if (target.indexOf(test[i]) < 0)
+      return false;
+  }
+  return true;
+ }
+```
+
+####Second Solution (Declarative):
+```js
+function mutation(arr) {
+ return arr[1].toLowerCase()
+              .split('')
+              .every(function (letter){
+                return arr[0].toLowerCase()
+                             .indexOf(letter) != -1;
+              });
+}
+```
+
+# Code Explanations:
+####First solution (Procedural):
+First we make the two strings in the array lowercase. `test` will hold what we are looking for in `target`.   
+Then we loop through our test characters and if any of them is not found we `return false`.
+
+If they are _all_ found, the loop will finish without returning anything and we get to `return true`.
+
+####Second solution (Declarative):
+
+Grab the second string, lowercase and turn it into an array; then make sure *every* one of its *letters* is a part of the lowercased first string.
+
+`Every` will basically give you letter by letter to compare, which we do by using `indexOf` on the first string.
+`indexOf` will give you -1 if the current `letter` is missing. 
+We check that not to be the case, for if this happens even once `every` will be false.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @sxmxc @Rafase282 @anuragaryan @hallaathrad for your help with Bonfire: Mutations`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-No-Repeats-Please.md b/Algorithm-No-Repeats-Please.md
new file mode 100644
index 0000000..90628c4
--- /dev/null
+++ b/Algorithm-No-Repeats-Please.md
@@ -0,0 +1,110 @@
+# Problem Explanation:
+- This task requires us to look at each possible permutation of a string. This is best done using a recursion function. Being able to build a function which collects all permutations of a string is a common interview question, so there is no shortage of tutorials out there on how to do this, in many different code languages.
+- This task can still be daunting even after watching a tutorial. You will want to send each new use of the function  3 inputs: 1. a new string (or character array) that is being built, 2. a position in your new string that's going to be filled next, and 3. an idea of what characters (more specifically positions) from the original string have yet to be used. The pseudo code will look something like this:
+
+  ```
+  var str = ???;
+  perm(current position in original string, what's been used in original string, current string build thus far){
+  if(current string is finished) {
+    print current string;
+  }else{
+    for(var i = 0; i < str.length; i++) {
+      if(str[i] has not been used) {
+        put str[i] into the current position;
+        mark str[i] as used
+        perm(current position in original string, what's been used in original string, current string build thus far)
+        unmark str[i] as used because another branch in the tree for i + 1 will still likely use it;
+      }
+    }
+  }
+  }
+  perm(0, nothing used yet, empty new string (or array the same size as str);
+  ```
+
+- Another way to think about this problem is to start from an empty space. Introduce the first letter to the space. This space will now contain the first sub-permutation. Here's a diagram illustrating the idea:
+
+![diagram](http://i.imgur.com/zFm5gRx.png)
+
+```js
+// An approach to introduce a new character to a permutation
+var ch = '?';
+var source = ['?', '?', '?'];     // Current sub-permutation
+var temp, dest = [];
+
+for(var i = 0; i <= source.length; ++i) {
+    temp = source.slice(0);    // Copy the array
+    temp.splice(i, 0, ch);    // Insert the new character
+    dest.push(temp);    // Store the new sub-permutation    
+}
+```
+
+Finding each permutation could then be done non-recursively by including the above in a function taking a source array and returning a destination array. For each letter of the input string, pass that character, as well as the array  returned from the previous call of the function.
+
+A way to visualize this is by considering a tree that starts with the first character of your string: ![Permutation Tree](http://i.imgur.com/t8zNarc.png)
+
+## Hint: 1
+- The easiest way is to use Heap's algorithm to recursively get a list of all the permutations.
+
+## Hint: 2
+- Once you have the list then just create a regular expression to catch the repeating characters.
+
+## Hint: 3
+- You will want to have the permutations as an array of joined strings instead of separated characters.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function permAlone(str) {
+
+  // Create a regex to match repeated consecutive characters.
+  var regex = /(.)\1+/g;
+
+  // Split the string into an array of characters.
+  var arr = str.split('');
+  var permutations = [];
+  var tmp;
+
+  // FUnction to swap variables' content.
+  function swap(index1, index2) {
+    tmp = arr[index1];
+    arr[index1] = arr[index2];
+    arr[index2] = tmp;
+  }
+
+  //Generate arrays of permutations using the algorithm.
+  function generate(int) {
+    if (int === 1) {
+      // Make sure to join the characters as we create  the permutation arrays
+      permutations.push(arr.join(''));
+    } else {
+      for (var i = 0; i != int; ++i) {
+        generate(int - 1);
+        swap(int % 2 ? 0 : i, int - 1);
+      }
+    }
+  }
+
+  generate(arr.length);
+
+  // Filter the array of repeated permutations.
+  var filtered = permutations.filter(function(string) {
+    return !string.match(regex);
+  });
+
+  //Return how many have no repetitions.
+  return filtered.length;
+}
+```
+
+# Code Explanation:
+- Read comments in code
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Philosophist @Rafase282 for your help with Bonfire: No Repeats Please`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Pairwise.md b/Algorithm-Pairwise.md
new file mode 100644
index 0000000..d0e1209
--- /dev/null
+++ b/Algorithm-Pairwise.md
@@ -0,0 +1,97 @@
+# Explanation:
+The program should look for the numbers in the array which would add to make the number from the **arg.** Then instead of adding those numbers up, you will add their **indices** which is the reason why you get 11 on the example from detail.
+
+Remember that arrays start at index 0 and go from there so from [1,4,2,3,0,5] if we switch to their indices it would be [0,1,2,3,4,5] then we add indices 1 + 2 + 3 + 5 and we get 11. That is what we need to return.
+
+## Hint: 1
+Remember to return the smaller sum if multiple are possible. This means `[1,1,1],1 should use 0 + 1 instead of 0+1 & 1 +1 , etc`
+
+## Hint: 2
+Try using an array of indices to track when an index has been used or not.
+
+## Hint: 3
+It is easy to confuse indices as being numbers, but since you will be interacting with them, make sure to work with them as integers to prevent the code from behaving erratically.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function pairwise(arr, arg) {
+  // Create empty array to keep the arrays we will add.
+  var index = [];
+
+  // Loop to check the first number.
+  for (var a in arr) {
+    // temporal first number.
+    var temp = arr[a];
+
+    // Second loop to check against the first number.
+    for (var i = 1; i < arr.length; i++) {
+      // temporal secodn number.
+      var temp2 = arr[i];
+
+      // Key element, this check to make sure that the numbers add to arg
+      // also that the second index is greater than the first, and that neither
+      // of those indices are already on the array.
+      if (temp + temp2 === arg && i > a && index.indexOf(+a) === -1 && index.indexOf(+i) === -1) {
+        // if true then add both indices as integers then stop checking to avoid repeats.
+        index.push(+a, +i);
+        break;
+      }
+    }
+  }
+
+  // After the two loops are done, check if index is empty to return 0
+  // or if it is not, then use Array.reduce(callbackFunc) to returnt he sum
+  // of the numbers.
+  if (index.length >= 1) {
+    var addAll = function(a, b) {
+      return a + b;
+    };
+
+    return index.reduce(addAll);
+  } else
+    return 0;
+}
+```
+
+# Code Explanation:
+- First I create an empty array to store the indices that i will be adding.
+- Then I create an outer loop to get the first number.
+- Then get the second number from another inner loop.
+- Then I check to make sure that the two numbers add to arg that was passed as a parameter to the function; we also have to make sure the index from the second loop is grater than the one from the first loop to avoid adding wrong indices. We also have to check to make sure the indices are not already part of the **index** array.
+- If all that is true, then we add the two indices as integer by using '+' or parseInt(), and then we stop the inner loop since everything else would be redundant and wrong.
+- After all the loops are over, check in **index** is empty, if it is then return 0, otherwise return the addition of all the integers in it using Array.reduce(callbackFunc) to return the sum of the numbers.
+- 
+##Another Solution
+
+```js
+function pairwise(arr, arg) {
+ //Set sum of indices to zero
+ var sum = 0;
+ //looping from first element
+  for(i=0;i<arr.length;i++){
+  //Looping from second element by setting first element  constant
+ for(j=i+1;j<arr.length;j++){
+ //Check whether the sum is equal to arg
+   if(arr[i]+arr[j] ==arg){
+   //Add the indices
+     sum += i+j;
+     //Set the indices to NaN so that they can't be used in next iteration
+     arr[i] =arr[j] = NaN;
+    }
+   } 
+  }
+ return sum;
+}
+pairwise([1, 1, 1], 2);
+```
+#Code explanation in comments
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @coded9 @SaintPeter for your help with Bonfire: Pairwise`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Pig-Latin.md b/Algorithm-Pig-Latin.md
new file mode 100644
index 0000000..5c54d0d
--- /dev/null
+++ b/Algorithm-Pig-Latin.md
@@ -0,0 +1,123 @@
+# Problem Explanation:
+- You need to create a program that will translate from English to Pig Latin. Check the instructions for converting to Pig Latin from the initial description or the wiki page. It might not be obvious but you need to remove all the consonants up to the first vowel in the case there letter does not start with a vowel.
+
+## Hint: 1
+- You will probably want to use regular expressions. This will allow you to convert the words easily.
+
+## Hint: 2
+- If the first character is a vowel, then take that whole word and add 'way' at the end. Otherwise comes the tricky part, take the consonant(s) before the first vowel and move it to the end and add 'ay'. This is where I had trouble since it was not clear that it was not just the first consonant but all of them before the first vowel.
+
+## Hint: 3
+- You will need to use everything you know about string manipulation to get the last part right. However, it can be done with `substr` alone.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+#### First solution
+```js
+function translate(str) {
+  // Create variables to be used
+  var pigLatin = '';
+  var regex = /[aeiou]/gi;
+  
+  // Check if the first character is a vowel
+  if (str[0].match(regex)) {
+    pigLatin = str + 'way';
+  
+  } else {
+    
+    // Find how many consonants before the first vowel.
+    var vowelIndice = str.indexOf(str.match(regex)[0]);
+    
+    // Take the string from the first vowel to the last char
+    // then add the consonants that were previously omitted and add the ending.
+    pigLatin = str.substr(vowelIndice) + str.substr(0, vowelIndice) + 'ay';
+  }
+
+  return pigLatin;
+}
+```
+
+#### Second solution
+```js
+function translate(str) {
+  //finding all the consonants in the beginning of the str. 
+  //by using && below I'm achiving a concept called Intersection of Regular Expressions
+  //where your pattern finds the union of two or more RegEx rules. 
+  //In Java you can achive this with RegEx special character '&&' 
+  //but in Javascript you can use the following instead. 
+  //Credit goes to http://stackoverflow.com/q/6595477
+  var consChars = str.match(/^[a-z]/) && str.match(/[^aeiou]*/).join('');
+  
+  //if no consonants found (i.e. str starts with vowels)
+  //use replace to remove consonants and construct newStr else add 'way' in the end
+  if (consChars !== ''){
+    newStr = str.replace(consChars, '') + consChars + "ay";
+  } else {
+    newStr = str + "way";
+  }
+  return newStr;
+}
+```
+
+#### Third solution
+```js
+
+function translate(str) {
+    var strArr = [];
+    var tmpChar;
+    
+    // check if the char is consonant using RegEx
+    function isConsonant(char) {
+        return !/[aeiou]/.test(char);
+    }
+    
+    // return initial str + "way" if it starts with vowel 
+    // if not - convert str to array
+    if (!isConsonant(str.charAt(0)))
+        return str + "way";
+    else 
+        strArr = str.split("");
+        
+    // push all consonats to the end of the array
+    while (isConsonant(strArr[0])) {
+        tmpChar = strArr.shift();
+        strArr.push(tmpChar);
+    }
+ // convert array to string and concatenate "ay" at the end  
+ return strArr.join("")+"ay";
+}
+
+translate("consonant");
+```
+#### Fourth Solution (recursive and declarative)
+```js
+function translate(str) {
+  function check(obj) {
+  	return ['a','i','u','e','o'].indexOf(str.charAt(obj)) == -1 ?
+      										  check(obj+1) : obj;}
+      										  
+  return str.substr(check(0))
+            .concat((check(0) === 0 ? 
+                        'w' : str.substr(0, check(0))) 
+                        + 'ay');
+}
+```
+
+# Code Explanation:
+####First-Third solution:
+- Read comments on code.
+
+#### Fourth solution (recursive and declarative)
+Let's start with a recursive function that will go checking for the first letter of the string to be in an *array of vowels*. In case of consonants, call itself on the next characters until finding the first vowel. It'll return the index of whatever it finds to be the last initial consonant. (i.e. Schmidtsville's would be 3).
+
+Then we'll grab our string, remove the letters up until that index, concatenate either that same chunk of removed string or `w` accordingly, and then `ay` regardless.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @sabahang @aganita @Hallaathrad for your help with Bonfire: Pig Latin`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Repeat-a-String-Repeat-a-String.md b/Algorithm-Repeat-a-String-Repeat-a-String.md
new file mode 100644
index 0000000..5dd29ee
--- /dev/null
+++ b/Algorithm-Repeat-a-String-Repeat-a-String.md
@@ -0,0 +1,98 @@
+# Explanation:
+The program is very simple, we have to take a variable and return that variable being repeated certain amount of times. No need to add space or anything, just keep repeating it into one single string.
+
+## Hint: 1
+You can't edit strings, you will need to create a variable to store the new string.
+
+## Hint: 2
+Create a loop to repeat the code as many times as needed.
+
+## Hint: 3
+Make the variable created store the current value and append the word to it.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+####First Solution
+```js
+function repeat(str, num) {
+  var accumulatedStr = '';
+
+  while (num > 0) {
+    accumulatedStr += str;
+    num--;
+  }
+
+  return accumulatedStr;
+}
+```
+
+####Second Solution
+
+```js
+function repeat(str, num) {
+  var newstr = [];
+  for (var i = 0; i < num; i++) {
+    newstr.push(str);
+  }
+  return newstr.join('');
+}
+
+repeat("abc", 3);
+```
+
+####Third Solution 
+(using Recursion)
+```js
+function repeat(str, num) {
+  if(num < 0)
+    return "";
+  if(num === 1)
+    return str;
+  else
+    return str + repeat(str, num - 1);
+}
+```
+
+####Fourth Solution
+(Declarative approach)
+
+```js
+function repeat(str, num) {
+  return num >= 0 ? str.repeat(num) : "";
+}
+
+repeat("abc", 3);
+```
+
+# Code Explanation:
+
+####First and Second solutions
+- Create a variable to store the repeated word.
+- Use a while loop or for loop to repeat code as many times as needed according to `num`
+- Then we just have to add the string to the variable created on step one. and increase or decrease num depending on how you set the loop.
+- At the end of the loop, return the variable for the repeated word.
+
+####Third solution
+(using recursiveness)
+- We check if `num` is a negative and return an empty string if true.
+- Then we check if it's equal to 1 and in that case we return the string itself.
+- If not, we add the string to a call of our function with `num` being decreased by 1, which will add another `str` and another until eventually `num` is 1. And return that whole process.
+
+####Fourth solution
+(Declarative approach)
+- This solution is somewhat similar to the third solution, except it uses the ternary operator form of the `if` statement.
+- The conditional's first statement (in this case our checking whether `num` is a negative number) is followed by `?`.
+- The next statement is what to execute, or in our case return, when the condition evaluates to true.
+- The final statement is what to execute, or again in our case return, if the initial statement evaluates to false.
+- In between the two statements for true and false, you use a colon `:` to indicate the separation.
+
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @shadowfool @Hallaathrad @sgalizia for your help with Bonfire: Repeat a String Repeat a String`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Return-Largest-Numbers-in-Arrays.md b/Algorithm-Return-Largest-Numbers-in-Arrays.md
new file mode 100644
index 0000000..a4e0cfb
--- /dev/null
+++ b/Algorithm-Return-Largest-Numbers-in-Arrays.md
@@ -0,0 +1,98 @@
+# Explanation:
+You will get an array that contains sub arrays of numbers and you need to return an array with the largest number from each of the sub arrays.
+
+## Hint: 1
+You will need to keep track of the array with the answer and the largest number of each sub-array.
+
+## Hint: 2
+You can work with multidimensional arrays by `Array[Index][SubIndex]`
+
+## Hint: 3
+Pay close attention to the timing of the storing of variables when working with loops
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solutions ahead!**
+
+#### First solution
+(Procedural approach)
+
+```js
+function largestOfFour(arr) {
+  var results = [];
+  for (var n = 0; n < arr.length; n++) {
+    var largestNumber = 0;
+    for (var sb = 0; sb < arr[n].length; sb++) {
+      if (arr[n][sb] > largestNumber) {
+        largestNumber = arr[n][sb];
+      }
+    }
+
+    results[n] = largestNumber;
+  }
+
+  return results;
+}
+```
+
+#### Second solution
+(Declarative approach)
+> NOTE: This is an advanced solution. NOT FOR BEGINNERS.
+
+```js
+function largestOfFour(arr) {
+  return arr.map(Function.apply.bind(Math.max, null));
+}
+```
+
+# Code Explanation:
+
+#### First Solution
+(Procedural approach)
+
+- Create a variable to store the *results* as an array.
+- Create an outer loop to iterate through the outer array.
+- Create a second variable to hold the largest number. This must be outside an inner loop so it won't be reassigned until we find a larger number.
+- Create said inner loop to work with the sub-arrays.
+- Check if the element of the sub array is larger than the currently stored largest number. If so, then update the number in the variable.
+- After the inner loop, save the largest number in the corresponding position inside of the `results` array.
+- And finally return said array.
+
+#### Second Solution
+(Declarative approach)
+
+> TL;DR: **We build a special callback function (using the `Function.bind` method), that works just like `Math.max` but also has `Function.apply`'s ability to take arrays as its arguments ** :smiley:
+
+- We start by mapping through the elements inside the main array. Meaning each one of the inner arrays.
+
+- Now the need a callback function to find the max of each inner array provided by the map.<br>So we want to create a function that does the work of `Math.max` and accepts input as an array (which by it doesn't by default).<br><br>In other words, it would be really nice and simple if this worked by itself:
+`Math.max([9, 43, 20, 6]); // Resulting in 43`<br>Alas, it doesn't.
+
+- To do the work of accepting arguments in the shape of an array, there is this `Function.apply` method, but it complicates things a bit by *invoking* the *context* function.<br>
+i.e. `Math.max.apply(null, [9, 43, 20, 6]);` would invoke something like a `Max.max` method. What we're looking for... almost. 
+
+> Here we're passing `null` as the *context* of the `Function.apply` method as `Math.max` doesn't need any context.
+
+- Since `arr.map` expects a callback function, not just an expression, we create a function out of the previous expression by using the `Function.bind` method. 
+- Since, `Function.apply` is a static *method* of the same `Function` *object*, we can call `Function.prototype.bind` on `Function.apply` i.e. `Function.apply.bind`.
+
+- Now we pass the *context* for the `Function.apply.bind` call (in this case we want `Math.max`so we can gain its functionality).
+- Since the embedded `Function.apply` method will also require a context as it's 1st argument, we need to pass it a bogus *context*.
+  - So, we pass `null` as the 2nd param to `Function.apply.bind` which gives a *context* to the `Math.max` method.
+  - Since, `Math.max` is independent of any *context*, hence, it ignores the bogus *context* given by `Function.apply` method call. 
+  - Thus, our `Function.apply.bind(Math.max, null)` makes a new function accepting the `arr.map` values i.e. the inner arrays.
+
+*Bien noté*? :neutral_face:
+
+
+**Reference:-**
+- http://devdocs.io/#q=js+Math+max
+- http://devdocs.io/#q=js+Array+map
+- http://devdocs.io/#q=js+Function+apply
+- http://devdocs.io/#q=js+Function+bind
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @abhisekp @Hallaathrad for your help with Bonfire: Return Largest Numbers in Arrays`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Reverse-a-String.md b/Algorithm-Reverse-a-String.md
new file mode 100644
index 0000000..8ebca6d
--- /dev/null
+++ b/Algorithm-Reverse-a-String.md
@@ -0,0 +1,38 @@
+# Problem Explanation:
+We need to take the string and reverse it, so if it originally reads 'hello', it will now read 'olleh'. We will need to split the string, and therefore we will be working with Arrays as well.
+
+## Hint: 1
+- Start by splitting the string by characters.
+
+## Hint: 2
+- Look up the built in function to reverse a string.
+
+## Hint: 3
+- Do not forget to join the characters back together after you reverse them.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function reverseString(str) {
+  return str.split('').reverse().join('');
+}
+```
+
+# Code Explanation:
+- Our goal is to take the input, `str`, and return it in reverse. Our first step is to split the string by characters using `split('')`. Notice that we don't leave anything in between the single quotes, this tells the function to split the string by each character.
+
+- Using the `split()` function will turn our string into an array of characters, keep that in mind as we move forward.
+
+- Next we *chain* the `reverse()` function, which takes our array of characters and reverses them.
+
+- Finally, we *chain* `join('')` to put our characters back together into a string. Notice once again that we left no spaces in the argument for join, this makes sure that the array of characters is joined back together by each character.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 for your help with Bonfire: Reverse a String`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Roman-Numeral-Converter.md b/Algorithm-Roman-Numeral-Converter.md
new file mode 100644
index 0000000..2828db7
--- /dev/null
+++ b/Algorithm-Roman-Numeral-Converter.md
@@ -0,0 +1,51 @@
+# Problem Explanation:
+- You will create a program that converts an integer to a roman numeral.
+
+## Hint: 1
+- Creating an array with the Roman Numerals and one with the decimal equivalent for the new forms will be very helpful.
+
+## Hint: 2
+- If you add the numbers that go before the new letter is introduced, it will save you plenty of code, like values for 4, 9, and 40.
+
+## Hint: 3
+- You can't have more than three consecutive Roman numerals together.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+# Code Solution:
+
+```js
+var convert = function(num) {
+
+  // Create arrays with default conversion with matching indices.
+  var decimalValue = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ];
+  var romanNumeral = [ 'M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' ];
+
+  //empty string variable for the final roman number
+  
+  var romanized = '';
+
+  // Loop through the indices of the decimalValue array.
+  for (var index = 0; index < decimalValue.length; index++) {
+    // Continue to loop while the value at the current index will fit into numCopy
+    while (decimalValue[index] <= num) {
+      // Add the Roman numeral & decrease numCopy by the decimal equivalent.
+      romanized += romanNumeral[index];
+      num -= decimalValue[index];
+    }
+  }
+
+  return romanized;
+};
+```
+
+# Code Explanation:
+- Read comments on code.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @SaintPeter @benschac for your help with Bonfire: Roman Numeral Converter`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Search-and-Replace.md b/Algorithm-Search-and-Replace.md
new file mode 100644
index 0000000..86a43da
--- /dev/null
+++ b/Algorithm-Search-and-Replace.md
@@ -0,0 +1,91 @@
+# Problem Explanation:
+- You will create a program that takes a sentence, then search for a word in it and replaces it for a new one while preserving the uppercase if there is one.
+
+## Hint: 1
+- Find the index where `before` is in the string.
+
+## Hint: 2
+- Check first letter case.
+
+## Hint: 3
+- Strings are immutable, you will need to save the edits on another variable, even if you must reuse the same one just to make it look like the changes where done using just that one variable.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution #1:
+
+```js
+function myReplace(str, before, after) {
+  // Find index where before is on string
+  var index = str.indexOf(before);
+  // Check to see if the first letter is uppercase or not
+  if (str[index] === str[index].toUpperCase()) {
+    // Change the after word to be capitalized before we use it.
+    after = after.charAt(0).toUpperCase() + after.slice(1);
+  }
+  // Now replace the original str with the edited one.
+  str = str.replace(before, after);
+
+  return str;
+}
+```
+## Code Solution #2:
+
+```js
+function myReplace(str, before, after) {
+//Create a regular expression object
+  var re = new RegExp(before,"gi");
+//Check whether the first letter is uppercase or not
+  if(/[A-Z]/.test(before[0])){
+  //Change the word to be capitalized
+    after = after.charAt(0).toUpperCase()+after.slice(1);
+     }
+     //Replace the original word with new one
+  var  newStr =  str.replace(re,after);
+
+ return newStr;
+
+}
+```
+
+## Code Solution #3:
+
+```js
+function myReplace(str, before, after) {
+
+    // create a function that will change the casing of any number of letter in parameter "target" 
+    // matching parameter "source"
+    function applyCasing(source, target) {
+        // split the source and target strings to array of letters
+        var targetArr = target.split("");
+        var sourceArr = source.split("");
+        // iterate through all the items of sourceArr and targetArr arrays till loop hits the end of shortes array
+        for (var i = 0; i < Math.min(targetArr.length, sourceArr.length); i++){
+            // find out the casing of every letter from sourceArr using regular expression
+            // if sourceArr[i] is upper case then convert targetArr[i] to upper case 
+            if (/[A-Z]/.test(sourceArr[i])) {
+                targetArr[i] = targetArr[i].toUpperCase();
+            }
+            // if sourceArr[i] is not upper case then convert targetArr[i] to lower case
+            else targetArr[i] = targetArr[i].toLowerCase();
+        } 
+        // join modified targetArr to string and return
+        return (targetArr.join(""));
+    }
+    
+    
+    // replace "before" with "after" with "before"-casing 
+    return str.replace(before, applyCasing(before, after));
+}
+```
+
+# Code Explanation:
+- Read comments on program.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @coded9 @aganita for your help with Bonfire: Search and Replace`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Seek-and-Destroy.md b/Algorithm-Seek-and-Destroy.md
new file mode 100644
index 0000000..263ff4f
--- /dev/null
+++ b/Algorithm-Seek-and-Destroy.md
@@ -0,0 +1,38 @@
+# Explanation:
+This problem is a bit tricky because you have to familiarize yourself with Arguments, as you will have to work with two **or more** but on the script you only see two. Many people hardcode this program for three arguments. You will remove any number from the first argument that is the same as any other other arguments.
+
+## Hint: 1
+You need to work with `arguments` as if it was a regular array. The best way is to convert it into one.
+
+## Hint: 2
+You need to filter, this also means you need to create a callback function, one that checks if the element is on the `indexOf()`
+
+## Hint: 3
+To convert `arguments` into an array use this code `var args = Array.prototype.slice.call(arguments);`
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function destroyer(arr) {
+  var args = Array.prototype.slice.call(arguments);
+  args.splice(0, 1);
+  return arr.filter(function(element) {
+    return args.indexOf(element) === -1;
+  });
+}
+```
+
+# Code Explanation:
+- The first line will turn the `arguments` variable into a full array instead of the limited array it currently is.
+- Next I remove the first argument since I don't need, since I only want the other arguments passed besides the first which is the array we are going to compare against.
+- Then use the `filter()` to filter out the elements that are on the array and keep the ones that are not.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 for your help with Bonfire: Seek and Destroy`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Slasher-Flick.md b/Algorithm-Slasher-Flick.md
new file mode 100644
index 0000000..8615b07
--- /dev/null
+++ b/Algorithm-Slasher-Flick.md
@@ -0,0 +1,63 @@
+# Problem Explanation:
+Return the remaining elements of an array after chopping off n elements from the head.
+
+For example: `slasher([1, 2, 3], 2);` must return [3]
+
+## Analysis:
+We need only the remaining part of an array, so we can just remove what we don't.
+
+## Understanding slicing:
+`.slice()` allows to get only what you want from an array.
+
+## Understanding the splice:
+If you want the **tail** of a snake remove the head first. The `.splice()` method changes the content of an array by removing existing elements and/or adding new elements. This can be handy. Get an array, remove the first part and return the remaining.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```javascript
+function slasher(arr, howMany) {
+  // remove the head
+  arr.splice(0,howMany);
+  //return the remaining or the tail  \__/(**)-<
+  return arr;
+}
+slasher([1, 2, 3], 2);
+```
+
+## Code Solution 2:
+
+```javascript
+function slasher(arr, howMany) {
+
+  //Return string after the amount chopped off.
+  return arr.slice(howMany);
+
+}
+```
+# References
+- [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @clint74 @Rafase282 @M-Bowe for your help with Bonfire: Slasher Flick`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
+
+```
+           ,,,         ,,,
+          ;"   ^;     ;'   ",
+          ;    s$$$$$$$s     ;
+          ,  ss$$$$$$$$$$s  ,'
+          ;s$$$$$$$$$$$$$$$
+          $$$$$$$$$$$$$$$$$$
+         $$$$P""Y$$$Y""W$$$$$      -{ Happy Camping! }
+         $$$$  p"$$$"q  $$$$$
+         $$$$  .$$$$$.  $$$$
+          $$DcaU$$$$$$$$$$
+            "Y$$$"*"$$$Y"
+                "$b.$$"
+```
\ No newline at end of file
diff --git a/Algorithm-Smallest-Common-Multiple.md b/Algorithm-Smallest-Common-Multiple.md
new file mode 100644
index 0000000..c9dd4bd
--- /dev/null
+++ b/Algorithm-Smallest-Common-Multiple.md
@@ -0,0 +1,110 @@
+# Explanation:
+This particular problem can be confusing because most people look for the smallest common multiple of the two number but forget the keyword **range.** This means that if you get `[1,5]` then you have to check for the smallest common multiple for all these numbers [1,2,3,4,5] that is evenly divisible by all of them.
+
+## Hint: 1
+Create an array with all the numbers that are missing from the original array to make it easier to check when having to check for even division.
+
+## Hint: 2
+You can use modulo `%` to check if the reminder is 0, which means it is evenly divisible.
+
+## Hint: 3
+If you sort the array from greater to lowest then you can check for the first two numbers as it is more likely to the the smallest common multiple than the lower numbers.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function smallestCommons(arr) {
+  // Sort array from greater to lowest
+  // This line of code was from Adam Doyle (http://github.com/Adoyle2014)
+  arr.sort(function(a, b) {
+    return b - a;
+  });
+
+  // Create new array and add all values from greater to smaller from the original array.
+  var newArr = [];
+  for (var i = arr[0]; i >= arr[1]; i--) {
+    newArr.push(i);
+  }
+
+  // Variables needed declared outside the loops.
+  var quot = 0;
+  var loop = 1;
+  var n;
+
+  // run code while n is not the same as the array length.
+  do {
+    quot = newArr[0] * loop * newArr[1];
+    for (n = 2; n < newArr.length; n++) {
+      if (quot % newArr[n] !== 0) {
+        break;
+      }
+    }
+
+    loop++;
+  } while (n !== newArr.length);
+
+  return quot;
+}
+```
+
+# Code Explanation:
+- Because the possibility of the smallest common denominator being among the two biggest numbers, it makes sense to check those first, so sort the array.
+- Create a new array to sore all the numbers.
+- Use a descending for loop to add the numbers from the biggest to the smallest in the new array.
+- Declare the variables for the quotient, the number of loops and the variable that we will use in a for loop on another scope, this will allow us access outside the loop.
+- Use a do while loop to check what we need while **n** is not the same length as the new array.
+- In the **do** part, we are going to multiply the very first number, times the number of loops, times the second number.
+- The loop part will allows us to increase the number beyond the greatest number we have without having to change the algorithm.
+- We enter a for loop that will go from n being 2 and going up by one while it is smaller than the array with all the numbers.
+- If the quotient is not even then stop the loop. If it is even then it check for the next elements in the array until it is not even or we find our answer.
+- Outside the loop, increase the value of loop.
+- At the end of the loop return the quotient.
+
+If the array only has two elements then the for loop never gets used and the return value is the product of said numbers. Otherwise, from the third element and until n is the same and the array length check if the remainder of the quotient and the third value of the array is not 0, if it is not 0 then stop loop increases and then we start over. If the remainder was 0 then keep checking until the end of the array.
+
+# Alternate solution:
+
+Note: The solution above requires over 2,000 loops to calculate the test case smallestCommons([1,13]), and over 4 million loops to calculate smallestCommons([1,25]). The alternate code below evaluates smallestCommons([1,13]) in around 20 loops and smallestCommons([1,25]) in 40, by using a more efficient algorithm.
+
+```js
+function smallestCommons(arr) {
+  for(i = Math.max(...arr); i >= Math.min(...arr); i--) arr.push(i);
+  
+  return arr.slice(2).reduce(function(x,y){
+    var a = x, b = y, t = 0;    
+    while(a % b){a = a % b; t = a; a = b; b = t;}
+    return x / b * y;
+  });
+}
+
+```
+
+If you have trouble understanding the .reduce() method, you can compare it to this code, which essentially does the same thing:
+
+```
+function smallestCommons(arr) {
+  for(i = Math.max(...arr); i >= Math.min(...arr); i--) arr.push(i);
+  
+  var lcm = arr[2], a = 0, b = 0, t = 0;
+  
+  for (i = 3; i < arr.length; i++){
+    a = lcm, b = arr[i];  
+    while(a % b){a = a % b; t = a; a = b; b = t;}
+    lcm = lcm / b * arr[i];
+  }
+  
+  return lcm;
+}
+```
+
+This code is based on the [Euclidean algorithm](https://en.wikipedia.org/wiki/Euclidean_algorithm) for finding smallest common multiples.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @Adoyle2014 for your help with Bonfire: Smallest Common Multiple`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Sorted-Union.md b/Algorithm-Sorted-Union.md
new file mode 100644
index 0000000..c9a79b3
--- /dev/null
+++ b/Algorithm-Sorted-Union.md
@@ -0,0 +1,92 @@
+# Problem Explanation:
+- The program has to return a new array of unique values from two original arrays in the order they show up. So there is not sorting required, and no duplicates.
+
+## Hint: 1
+- Since you have no idea how many parameters were passed, it would be best to loop through the `arguments` before looping through the arrays.
+
+## Hint: 2
+- I used loops, you can use something else like map, reduce or others if you want.
+
+## Hint: 3
+- You will have to check if the current value is already on the array to be returned for every value.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+#### First Solution:
+
+```js
+function unite(arr1, arr2, arr3) {
+  // Creates an empty array to store our final result.
+  var finalArray = [];
+
+  // Loop through the arguments object to truly made the program work with two or more arrays
+  // instead of 3.
+  for (var i = 0; i < arguments.length; i++) {
+    var arrayArguments = arguments[i];
+
+    // Loops through the array at hand
+    for (var j = 0; j < arrayArguments.length; j++) {
+      var indexValue = arrayArguments[j];
+
+      // Checks if the value is already on the final array.
+      if (finalArray.indexOf(indexValue) < 0) {
+        finalArray.push(indexValue);
+      }
+    }
+  }
+
+  return finalArray;
+}
+```
+
+# Code Explanation:
+- Check comments in code.
+
+#### Second Solution:
+
+```js
+function unite() {
+  var concatArr = [];
+  var i = 0;
+  while (arguments[i]){
+    concatArr = concatArr.concat(arguments[i]); i++;
+  }
+  uniqueArray = concatArr.filter(function(item, pos) {
+    return concatArr.indexOf(item) == pos;
+  }); 
+  return uniqueArray;
+}
+```
+
+# Code Explanation:
+- Number of arguments can change dynamically so we don't need to bother providing our func with args at all
+- we use a while loop to concatanate all the arguments into one Array called `concatArr`
+- we use `filter` to remove the duplicate elements by checking the index of each element and removing same elements with different positions
+- ordering will be preserved as we didn't mess with it
+
+#### Third Solution:
+
+```js
+function unite(arr1, arr2, arr3) {
+ var newArr;
+ //Convert the arguments object into an array
+  var args = Array.prototype.slice.call(arguments);
+  //Use reduce function to flatten the array
+  newArr = args.reduce(function(arrA,arrB){
+  //Apply filter to remove the duplicate elements in the array
+    return arrA.concat(arrB.filter(function(i){
+      return arrA.indexOf(i) === -1;
+    }));
+  });
+
+   return newArr;                    
+}
+```
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @sabahang @coded9 for your help with Bonfire: Sorted Union`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Spinal-Tap-Case.md b/Algorithm-Spinal-Tap-Case.md
new file mode 100644
index 0000000..c082549
--- /dev/null
+++ b/Algorithm-Spinal-Tap-Case.md
@@ -0,0 +1,51 @@
+# Problem Explanation:
+- Convert the given string to an all lowercase sentence joined by dashes.
+
+## Hint: 1
+- Create a regex to for all white spaces and underscores.
+
+## Hint: 2
+- You will also have to make everything lowercase.
+
+## Hint: 3
+- The tricky part is getting the regex part to work, once you do that then just turn the uppercase to lowercase and replace spaces with underscores using `replace()`
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+#### First solution
+
+```js
+function spinalCase(str) {
+  // Create a variable for the white space and underscores.
+  var regex = /\s+|_+/g;
+
+  // Replace low-upper case to low-space-uppercase
+  str = str.replace(/([a-z])([A-Z])/g, '$1 $2');
+
+  // Replace space and underscore with -
+  return str.replace(regex, '-').toLowerCase();
+}
+```
+
+#### Second solution
+```js
+function spinalCase(str) {
+  // Replace low-upper case to low-space-uppercase
+  str = str.replace(/([a-z])([A-Z])/g, '$1 $2');
+  // Split on whitespace and underscores and join with dash
+  return str.toLowerCase().split(/(?:_| )+/) .join('-');
+}
+```
+
+# Code Explanation:
+#### First and Second solutions
+- Read comments in code.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @anuragaryan for your help with Bonfire: Spinal Tap Case`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Steamroller.md b/Algorithm-Steamroller.md
new file mode 100644
index 0000000..7ad0999
--- /dev/null
+++ b/Algorithm-Steamroller.md
@@ -0,0 +1,68 @@
+# Explanation:
+This problem seems simple but you need to make sure to flatten any array, regardless of the level which is what adds a bit of difficulty to the problem.
+
+## Hint: 1
+You need to check if an element is an array or not.
+
+## Hint: 2
+If you are dealing with an array, then you need flatten it by getting the value inside of the array. This means if you have [[4]] then instead of returning [4] you need to return 4. If you get [[[4]]] then the same, you want the 4. You can access it with arr[index1][index2] to go a level deeper.
+
+## Hint: 3
+You will definitely need recursion or another way to go beyond two level arrays to make the code flexible and not hard-coded to the answers needed. Have fun!
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution 1:
+
+```js
+function steamroller(arr) {
+  var flattenedArray = [];
+
+  // Create function that adds an element if it is not an array.
+  // If it is an array, then loops through it and uses recursion on that array.
+  var flatten = function(arg) {
+    if (!Array.isArray(arg)) {
+      flattenedArray.push(arg);
+    } else {
+      for (var a in arg) {
+        flatten(arg[a]);
+      }
+    }
+  };
+
+  // Call the function for each element in the array
+  arr.forEach(flatten);
+  return flattenedArray;
+}
+```
+
+# Code Explanation:
+- Create a new variable to keep flattened arrays.
+- Create a function that will add non array elements to the new variable, and for the ones that are array it loops through them to get the element.
+- It does that by using recursion, if the element is an array then call the function again with a layer of array deeper to check if it is an array or not. if it is not then push that non-array element to the variable that gets returned. Otherwise, keep going deeper.
+- Invoke the function, the first time you will always pass it an array, so it always fall in to the isArray branch
+- Return the flattened array.
+
+## Code Solution 2:
+
+```js
+function steamroller(arr) {
+  return arr.reduce(function (flat, toFlatten) {
+    return flat.concat(Array.isArray(toFlatten) ? steamroller(toFlatten) : toFlatten);
+  }, []);
+}
+```
+# Code Explanation:
+- Use reduce to concatenate each element into the last element
+- If the new element is an Array itself call the function recursively to flatten it before merging it with the rest of result
+- Pass an empty array to reduce as initial value to make sure even the first element will be processed
+- Credit goes to http://stackoverflow.com/a/15030117/1075499
+
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @sabahang for your help with Bonfire: Steamroller`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Style-Guide.md b/Algorithm-Style-Guide.md
new file mode 100644
index 0000000..effbcc7
--- /dev/null
+++ b/Algorithm-Style-Guide.md
@@ -0,0 +1,40 @@
+_work in progress_
+
+# Bonfire Style Guide
+Writing Bonfire challenges is a great way to exercise your own problem solving and testing abilities. It is a simple three step process.
+1. Fill out the [generator](http://www.freecodecamp.com/bonfire-challenge-generator) form and test your challenge.
+2. Once you have confirmed a working bonfire challenge in the generator, copy and paste the fields into the [JSON generator.](http://www.freecodecamp.com/bonfire-json-generator)
+3. Copy the JSON, fork the freecodecamp repository, and submit a pull request with your addition to the [bonfires.json.](https://github.com/FreeCodeCamp/freecodecamp/blob/master/seed_data/bonfires.json)
+
+## Name
+Name your challenge
+
+## Difficulty
+Attempt to rate difficulty compared against existing bonfire challenges.
+
+_TODO: add basic quantifiers for each difficulty level_
+
+## Description
+Separate paragraphs with a line break. Only the first paragraph is visible prior to a user clicking the "More information" button.
+
+All necessary information must be included in the first paragraph. Write this first paragraph as succinct as possible. Subsequent paragraphs should offer hints or details if needed.
+
+If your subject matter warrants deeper understanding, you may link to Wikipedia.
+
+## Challenge Seed
+This is important.
+
+## ~~Challenge Entry Point~~ (deprecated)
+_Leave this field blank. It will soon be removed from the generator._
+
+## Tests
+These tests are what bring your challenge to life. Without them, we cannot confirm the accuracy of a user's submitted answer. Choose your tests wisely.
+
+Bonfire tests are written using the [Chai.js](http://chaijs.com/) assertion library. Please use the `should` and `expect` syntax for end user readability. As an example of what not do to, many of the original Bonfire challenges are written with `assert` syntax and many of the test cases are difficult to read.
+
+If your bonfire question has a lot of edge cases, you will need to write many tests for full coverage. If you find yourself writing more tests than you desire, you may consider simplifying the requirements of your bonfire challenge. For difficulty level 1 through 3, you will generally only need 2 to 4 tests.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @brandenbyers @Rafase282 for your help with the Bonfire Style Guide`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
\ No newline at end of file
diff --git a/Algorithm-Sum-All-Numbers-in-a-Range.md b/Algorithm-Sum-All-Numbers-in-a-Range.md
new file mode 100644
index 0000000..81c74dc
--- /dev/null
+++ b/Algorithm-Sum-All-Numbers-in-a-Range.md
@@ -0,0 +1,88 @@
+# Problem Explanation:
+- You need to create a program that will take an array of two numbers who are not necessarily in order, and then add not just those numbers but any numbers in between. For example, [3,1] will be the same as `1+2+3` and not just `3+1`
+
+## Hint: 1
+- Use `Math.max()` to find the maximum value of two numbers.
+
+## Hint: 2
+- Use `Math.min()` to find the minimum value of two numbers.
+
+## Hint: 3
+- Remember to that you must add all the numbers in between so this would require a way to get those numbers.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution 1:
+
+```js
+function sumAll(arr) {
+    var max = Math.max(arr[0], arr[1]);
+    var min = Math.min(arr[0], arr[1]);
+    var temp = 0;
+    for (var i=min; i <= max; i++){
+        temp += i;
+    }
+  return(temp);
+}
+
+sumAll([1, 4]);
+```
+
+## Code Explanation:
+- First create a variable to store the max number between two.
+- The same as before for the Smallest number.
+- We create a temporary variable to add the numbers.
+
+Since the numbers might not be always in order, using `max()` and `min()` will help organize.
+
+## Code Solution 2:
+
+```js
+function sumAll(arr) {
+  // Buckle up everything to one!
+
+  // Using ES6 arrow function (one-liner)
+  var sortedArr = arr.sort((a,b) => a-b);
+  var firstNum = arr[0];
+  var lastNum = arr[1];
+  // Using Arithmetic Progression summing formula
+
+  var sum = (lastNum - firstNum + 1) * (firstNum + lastNum) / 2;
+  return sum;
+}
+```
+
+## Code Solution 3:
+
+```js
+function sumAll(arr) {
+    var sum = 0;
+    for (var i = Math.min(...arr); i <= Math.max(...arr); i++){
+        sum += i;
+    }
+  return sum;
+}
+
+sumAll([1, 4]);
+```
+
+## Code Explanation:
+- Creating a variable sum to store the sum of the elements.
+- Starting iteration of the loop from min element of given array and stopping when it reaches the max element. 
+- Using a spread operator (...arr) allows passing the actual array to the function instead of one-by-one elements.
+
+## References & Details:
+- [Arithmetic Progression summing formula](https://en.wikipedia.org/wiki/Arithmetic_progression#Sum)
+- [ES6 arrow function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
+- [Spread Operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)
+- [Using Spread Operator in Math.max()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max)
+
+The line `var sortedArr = arr.sort((a,b) => a-b);` is probably what will have you more confused. This would be the same as creating a function that returns `a-b` for the `sort()` which is the standard way to sort numbers from smallest to largest. Instead using arrow or fat arrow function, we are able to do all that in one single line thus allowing us to write less.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @abhisekp for your help with Bonfire: Sum All Numbers in a Range`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Sum-All-Odd-Fibonacci-Numbers.md b/Algorithm-Sum-All-Odd-Fibonacci-Numbers.md
new file mode 100644
index 0000000..9e25bbd
--- /dev/null
+++ b/Algorithm-Sum-All-Odd-Fibonacci-Numbers.md
@@ -0,0 +1,72 @@
+# Explanation:
+You will need to gather all the **Fibonacci** numbers and then check for the odd ones. Once you get the odd ones then you will add them all. The last number should be the number given as a parameter if it actually happens to be an off Fibonacci number.
+
+## Hint: 1
+To get the next number of the series, you need to add the current one to the previous and that will give you the next one.
+
+## Hint: 2
+To check if a number is even all you have to check is if that number % 2 == 0.
+
+## Hint: 3
+As you get the next odd one, don't forget to add it to a global variable that can be returned at the end. `result += currNumber;` Will do the trick.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution #1:
+
+```js
+function sumFibs(num) {
+    var prevNumber = 0;
+    var currNumber = 1;
+    var result = 0;
+    while (currNumber <= num) {
+        if (currNumber % 2 !== 0) {
+            result += currNumber;
+        }
+
+        currNumber += prevNumber;
+        prevNumber = currNumber - prevNumber;
+    }
+
+    return result;
+}
+```
+
+# Code Explanation:
+- Create a variable to keep record of the current and previous numbers along with the result that will be returned.
+- Use a while loop to make sure we do not go over the number given as parameter.
+- We use the modulo operand to check if the current number is odd or even. If even add it to the result.
+- Complete the Fibonacci circle by rotating getting the next number and swapping values after.
+- Return the result.
+
+## Code Solution #2:
+
+```js
+function sumFibs(num) {
+  // create an array of fib numbers till num
+  var arrFib = [1];
+  for (var i = 1; i <=num;) {
+      arrFib.push(i);
+      i = arrFib[arrFib.length - 1] + arrFib[arrFib.length - 2];
+  }
+  
+  // return the sum of odd numbers from the array
+  var res = arrFib.reduce(function(prev, curr) { 
+      if (curr%2 !== 0) return prev + curr;
+      else return prev;
+    });
+  
+  return res;
+}
+```
+
+# Code Explanation:
+- See comments
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @d3ddd for your help with Bonfire: Sum All Odd Fibonacci Numbers`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Sum-All-Primes.md b/Algorithm-Sum-All-Primes.md
new file mode 100644
index 0000000..711935c
--- /dev/null
+++ b/Algorithm-Sum-All-Primes.md
@@ -0,0 +1,96 @@
+# Explanation:
+The explanation for this problem is very simple. You will generate a list of prime numbers up to the number you are given as a parameter. Then you need to add them all up and return that value. The tricky part is on generating the list of prime numbers. I suggest you find a code or a good math algorithm that you can turn into code.
+
+## Hint: 1
+Generate a list of all the numbers up to and including the one you got as a parameter. This will be needed to determine which numbers are prime or not.
+
+## Hint: 2
+Check this [link](http://stackoverflow.com/questions/11966520/how-to-find-prime-numbers-between-0-100) if you prefer to find a solution for finding primes, or try learning and implementing your own [Sieve of Eratosthenes](https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes)
+
+## Hint: 3
+This problem is hard if you have to create your own code to check for primes, so don't feel bad if you had to use someone's code for that bit. Either way, you are most likely using array, so once you generate an array of primes, then just add them all up and return the number you get.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function sumPrimes(num) {
+  var res = 0;
+
+  // FUnction to get the primes up to max in an array
+  function getPrimes(max) {
+    var sieve = [];
+    var i;
+    var j;
+    var primes = [];
+    for (i = 2; i <= max; ++i) {
+      if (!sieve[i]) {
+        // i has not been marked -- it is prime
+        primes.push(i);
+        for (j = i << 1; j <= max; j += i) {
+          sieve[j] = true;
+        }
+      }
+    }
+
+    return primes;
+  }
+
+  // Add the primes
+  var primes = getPrimes(num);
+  for (var p = 0; p < primes.length; p++) {
+    res += primes[p];
+  }
+
+  return res;
+}
+```
+
+# Code Explanation:
+- Create a function that generates the numbers from 1 to **num** and check if they are prime along the way.
+- Declare the variables that will be needed.
+- Start with 2, if it has not been marked and added to the sieve array then it is a prime and we add it to the prime array.
+- Add the others to the sieve array.
+- Return the primes
+- Loop through the returned array and add all the elements to then return the final value.
+
+## Recursive Solution:
+```JS
+function sumPrimes(num) {
+  // function to check if the number presented is prime
+  function isPrime(number){
+      for (i = 2; i <= number; i++){
+          if(number % i === 0 && number!= i){
+          // return true if it is divisable by any number that is not itself. 
+             return false;
+          }
+       }
+       // if it passes the for loops conditions it is a prime
+      return true;
+  }
+  // 1 is not a prime, so return nothing, also stops the recusrive calls.
+  if (num === 1){
+    return 0;
+  }
+  // Check if your number is not prime
+  if(isPrime(num) === false){
+  // for non primes check the next number down from your maximum number, do not add anything to your answer
+    return sumPrimes(num - 1);
+  }
+  
+  // Check if your number is prime
+  if(isPrime(num) === true){
+  // for primes add that number to the next number in the sequence through a recursive call to our sumPrimes function.
+    return num + sumPrimes(num - 1);
+  }
+}
+```
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @shadowfool for your help with Bonfire: Sum All Primes`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Symmetric-Difference.md b/Algorithm-Symmetric-Difference.md
new file mode 100644
index 0000000..4672910
--- /dev/null
+++ b/Algorithm-Symmetric-Difference.md
@@ -0,0 +1,87 @@
+# Problem Explanation:
+Symmetric Difference is the difference between **two** sets.
+
+So in the Symmetric Difference Bonfire you would work through the arrays of numbers something like this -
+
+`sym(A, B, C)` Translates to `sym(sym(A,B),C)`
+
+Or in plain English - First find the Symmetric Difference of Set A and Set B. Then find the Symmetric Difference of this new set and Set C.
+
+So -
+
+`sym([1, 2, 5], [2, 3, 5], [3, 4, 5])`
+
+would equal
+
+`[1,4,5]`
+
+Here's a nice video tutorial (with an awful fake British accent!) -
+
+[YouTube - Symmetric Difference](https://www.youtube.com/watch?v=PxffSUQRkG4)
+
+## Hint: 1
+The arguments object is not an Array. It is similar to an Array, but does not have any Array properties except length. For example, it does not have the pop method. However it can be converted to a real Array:
+
+`var args = Array.prototype.slice.call(arguments);`
+
+## Hint: 2
+Write a function that returns the symmetric difference of array1 and array2.
+
+`yourFunction([1, 2, 3], [2, 4, 6])` must return `[1, 3, 4, 6]`
+
+## Hint: 3
+Use `Array.prototype.reduce` along with yourFunction to repeat the process on multiple arguments
+
+Something a bit strange about the definition of symmetric difference is that if one identical item occurs in three different sets, it is a member of the symmetric difference.  An example is easier to explain:
+```
+a = [1, 2, 5]
+b = [2, 3, 5]
+c = [3, 4, 5]
+
+sym(a, b) = [1, 3]
+sym([1, 3], c) = [1, 4, 5]
+```
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function sym() {
+
+  // Convert the argument object into a proper array
+  var args = Array.prototype.slice.call(arguments);
+
+  // Return the symmetric difference of 2 arrays
+  var getDiff = function(arr1, arr2) {
+
+    // Returns items in arr1 that don't exist in arr2
+    function filterFunction(arr1, arr2) {
+      return arr1.filter(function(item) {
+        return arr2.indexOf(item) === -1;
+      });
+    }
+
+    // Run filter function on each array against the other
+    return filterFunction(arr1, arr2)
+      .concat(filterFunction(arr2, arr1));
+  };
+
+  // Reduce all arguments getting the difference of them
+  return args.reduce(getDiff, []);
+}
+```
+
+# Code Explanation:
+- Read comments in code.
+
+# Related Links
+- [Symmetric Difference](https://en.wikipedia.org/wiki/Symmetric_difference)
+- [Array.reduce()](http://devdocs.io/javascript/global_objects/array/reduce)
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @guyjoseph @jjmax75 for your help with Bonfire: Symmetric Difference`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Title-Case-a-Sentence.md b/Algorithm-Title-Case-a-Sentence.md
new file mode 100644
index 0000000..a324c2b
--- /dev/null
+++ b/Algorithm-Title-Case-a-Sentence.md
@@ -0,0 +1,97 @@
+# Explanation:
+We have to return a sentence with camel case. This means that the first letter will always be in uppercase and the rest lowercase.
+
+## Hint: 1
+- You should start by splitting the string into an array of words.
+- Split the sentence.
+
+## Hint: 2
+- You should make the word lowercase before making the first letter uppercase.
+- Use replace method on each word to capitalize the first letter of each word.
+
+## Hint: 3
+- You will need to create a new string with pieces of the previous one and at the end merge everything into a single string again.
+- In replace method , give first argument as the position of the first letter using charAt. For second argument write a function to return the capitalized letter as the replacement.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+String.prototype.replaceAt = function(index, character) {
+    return this.substr(0, index) + character + this.substr(index+character.length);
+};
+
+
+function titleCase(str) {
+    var newTitle = str.split(' ');
+    var updatedTitle = [];
+    for (var st in newTitle) {
+        updatedTitle[st] = newTitle[st].toLowerCase().replaceAt(0, newTitle[st].charAt(0).toUpperCase());
+    }
+    return updatedTitle.join(' ');
+}
+```
+
+Second Solution:
+
+```js
+function titleCase(str) {
+  var newstr=str.toLowerCase().split(" ");
+  for(var i=0;i<newstr.length;i++){
+  var f=newstr[i].charAt(0);
+ newstr[i]=newstr[i].replace(newstr[i].charAt(0),function replace(f){
+   return f.toUpperCase();
+ });
+
+  }
+  console.log(newstr);
+  return newstr.join(" ");
+}
+
+titleCase("hello world");
+```
+
+Third Solution:
+
+```js
+function titleCase(str) {
+  str = str.toLowerCase().split(' ');
+  for (var i in str) {
+    str[i] = str[i].replace(str[i].charAt(0), str[i].charAt(0).toUpperCase());
+  };
+  return str.join(' ');
+}
+
+titleCase("I'm a little tea pot", "");
+```
+
+Minimal Solution:
+
+```js
+function titleCase(str) {
+  return str.replace(/\w\S*/g, function(word){
+    return word.charAt(0).toUpperCase()+word.substr(1).toLowerCase();}); 
+}
+
+titleCase("I'm a little tea pot", "");
+```
+
+Minimaler Solution:
+
+```js
+function titleCase(s) {return s.toLowerCase().replace(/^[a-z]|\s[a-z]/g, function(m){return m.toUpperCase()})}
+```
+
+# Code Explanation:
+We are modifying the `replaceAt` function using prototype to facilitate the use of the program.
+
+Split the string by whitespaces, and create a variable to track the updated title. Then we use a loop to turn turn the first character of the word to uppercase and the rest to lowercase. by creating concatenated string composed of the whole word in lowercase with the first character replaced by it's uppercase.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @PoojaKumar @Hallaathrad for your help with Bonfire: Title Case a Sentence`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
\ No newline at end of file
diff --git a/Algorithm-Truncate-a-String.md b/Algorithm-Truncate-a-String.md
new file mode 100644
index 0000000..3e7de63
--- /dev/null
+++ b/Algorithm-Truncate-a-String.md
@@ -0,0 +1,56 @@
+# Explanation:
+We need to reduce the length of the string or **truncate** it if it is longer than the given maximum lengths specified and add `...` to the end. If it is not that long then we keep it as is.
+
+## Hint: 1
+Strings are immutable in JavaScript so we will need a new variable to store the truncated string.
+
+## Hint: 2
+You will need to use slice and specify where to start and where to stop.
+
+## Hint: 3
+Do not forget that when we truncate the word, we also must count the length added by `...`
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function truncate(str, num) {
+  if (str.length <= num)
+    return str;
+  
+  if (num <= 3)
+    return str.substr(0,num) + "...";
+  
+  return str.substr(0,num-3) + "...";
+}
+```
+
+# Code Explanation:
+First we need an if-statement to test if the length of the full string passed in as the first argument already fits within the size limit passed in as the second argument. If so we can just return the string that was passed in.
+
+```js
+if (str.length <= num)
+  return str;
+```
+
+Then we need to check if the num fits into our special case, where the desired length is less than or equal to three. In this case we will return the string trimmed to our target length, followed by `"..."`. We don't need to worry about the `"..."` being counted against the length of our output string in this case.
+
+```js
+if (num <= 3)
+  return str.substr(0,num) + "...";
+```
+
+Finally, we write the return for what happens when neither of the previous if-statements have been true. This call to `substr()` gives us a string that is 3 less than the target length specified by `num`, which is done so that we have room to add on the `"..."` and fit within that target.
+
+```js
+return str.substr(0,num-3) + "...";
+```
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @richyvk @ltegman for your help with Bonfire: Truncate a String`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Validate-US-Telephone-Numbers.md b/Algorithm-Validate-US-Telephone-Numbers.md
new file mode 100644
index 0000000..d158afb
--- /dev/null
+++ b/Algorithm-Validate-US-Telephone-Numbers.md
@@ -0,0 +1,53 @@
+# Problem Explanation:
+- The task is not that hard to understand, implementing it is the hardest part. You have a to validate an US phone number. This means there is a certain amount of numbers required, while you don't need to put the country code, you will still need the area code and use one of the few formats allowed.
+
+## Hint: 1
+- There is no way around it, you will need to brush up your regular expressions skills.
+
+## Hint: 2
+- Try using a site like [http://regexpal.com/](http://regexpal.com/) to test the regex live while you create it.
+
+## Hint: 3
+- Start by trying to get it to validate each format from the example, each one should take a new line, once you get to select them all, then add examples that should not be selected and make sure they are not selected.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+
+## Code Solution 1:
+
+```js
+function telephoneCheck(str) {
+    
+   var regex = /^(1\s?)?(\(\d{3}\)|\d{3})[\s\-]?\d{3}[\s\-]?\d{4}$/;
+  
+   return regex.test(str);
+}
+```
+
+# Code Explanation:
+- `^` denotes the beginning of the string `(1\s?)?` checks allows for a "1" or a "1 " at the beginning.
+- `\d{n}` checks for exactly n number of digits so  `(\(\d{3}\)|\d{3})` checks for three digits that are allowed to be between parenthesis.
+- `[\s\-]?` checks for spaces or dashes between the groups of digits.
+- `$` denotes the end of the string. In this case the beginning and end of the string are used in the regex to prevent it from matching any longer string that might contain a valid phone number (eg. "s 555 555 5555 a").
+- Lastly we use `regex.test(str)` to test if the string adheres to the regular expression and return `true` or `false`.
+
+## Code Solution 2:
+
+```js
+function telephoneCheck(str) {
+  // Comprehensive regex from @dting 
+  var re = /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})$/;
+
+  return re.test(str);
+}
+```
+# Code Explanation
+- This is an example of a very comprehensive and robust solution to validating US phone numbers client side. In such cases it might be much better and easier to implement this library [libphonenumber.](https://github.com/googlei18n/libphonenumber)
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @guyjoseph @dting @jhalls @crisvdkooij for your help with Bonfire: Validate US Telephone Numbers`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Where-art-thou.md b/Algorithm-Where-art-thou.md
new file mode 100644
index 0000000..e52849f
--- /dev/null
+++ b/Algorithm-Where-art-thou.md
@@ -0,0 +1,121 @@
+![](http://i.imgur.com/IUY2p6Y.jpg)
+
+# Problem Explanation
+Write an algorithm that will take an `array` for the first argument and return an `array` with all the  `object`s that matches all the properties and values in the `Object` passed as second parameter.
+
+## Hint: 1
+You may use `for` loop or the `Array.prototype.filter` method.
+- [http://devdocs.io/#q=js+for](http://devdocs.io/#q=js+for)
+- [http://devdocs.io/#q=js+Array+filter](http://devdocs.io/#q=js+Array+filter)
+
+## Hint: 2
+Try to use `Object.prototype.hasOwnProperty` method to know if the property name exists in an object (as its own property).
+- [http://devdocs.io/#q=js+Object+hasOwnProperty](http://devdocs.io/#q=js+Object+hasOwnProperty)
+
+## Hint: 3
+Check equivalence of `Object` in `collection` with `Object` passed as second parameter to `where` function.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+### First
+
+```js
+function where(collection, source) {
+  // "What's in a name? that which we call a rose
+  // By any other name would smell as sweet.”
+  // -- by William Shakespeare, Romeo and Juliet
+  var srcKeys = Object.keys(source);
+
+  // filter the collection
+  return collection.filter(function (obj) {
+    for(var i = 0; i < srcKeys.length; i++) {
+      // check if obj in collection doesn't have the key
+      // or if it does have the key,
+      // then check if the property value doesn't match the value in source
+      if(!obj.hasOwnProperty(srcKeys[i]) || obj[srcKeys[i]] !== source[srcKeys[i]]) {
+        return false;
+      }
+    }
+    return true;
+  });
+}
+```
+
+### Second
+
+```js
+function where(collection, source) {
+  // "What's in a name? that which we call a rose
+  // By any other name would smell as sweet.”
+  // -- by William Shakespeare, Romeo and Juliet
+  var srcKeys = Object.keys(source);
+
+  // filter the collection
+  return collection.filter(function (obj) {
+    // return a Boolean value for `filter` method
+    return srcKeys.every(function (key) {
+      // reduce to Boolean value to be returned for `every` method
+      return obj.hasOwnProperty(key) && obj[key] === source[key];
+    });
+  });
+}
+```
+
+### Third
+
+```js
+function where(collection, source) {
+  // "What's in a name? that which we call a rose
+  // By any other name would smell as sweet.”
+  // -- by William Shakespeare, Romeo and Juliet
+  var srcKeys = Object.keys(source);
+
+  // filter the collection
+  return collection.filter(function (obj) {
+    // return a Boolean value for filter callback using reduce method
+    return srcKeys.reduce(function (res, key) {
+      // reduce to Boolean value to be returned by reduce method
+      return obj.hasOwnProperty(key) && obj[key] === source[key];
+    }, false);
+  });
+}
+```
+### Fourth
+
+```js
+function where(collection, source) {
+//Array for storing the matched objects
+  var arr = [];
+  //For maintaining the number of key-value matches
+  var count ;
+  collection.forEach(function(collObj) { 
+  //Initialize to zero for each object in collection
+     count = 0 ; 
+     for(var prop in source){
+     //Check whether the key exists and the key-value is matched
+        if( collObj.hasOwnProperty(prop) && collObj[prop] === source[prop])
+        //Increase the count if matched
+        count++; 
+       }
+     //Check whether all key-value pairs in source are matched
+     if(count>=Object.keys(source).length){ 
+        arr.push(collObj);
+      }
+    
+    });
+    return arr;
+}
+```
+## Code Explanation:
+> Please read the comments in the source code.
+
+Check this http://repl.it/BFZQ/19 for pretty debugging and code explanation
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @abhisekp @dting @coded9 for your help with Bonfire: Where art Thou`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Where-do-I-belong.md b/Algorithm-Where-do-I-belong.md
new file mode 100644
index 0000000..932ac7d
--- /dev/null
+++ b/Algorithm-Where-do-I-belong.md
@@ -0,0 +1,58 @@
+# Explanation:
+This can be a tricky problem to understand. You need to find where in the array a number should be inserted by order, and return the index where it should go.
+
+## Hint: 1
+The first thing to do is sort the array from lower to bigger, just to make the code easier. This is where sort comes in, it needs a callback function so you have to create it.
+
+## Hint: 2
+Once the array is sorted, then just check for the first number that is bigger and return the index.
+
+## Hint: 3
+If there is no index for that number then you will have to deal with that case too.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+function where(arr, num) {
+  arr.sort(function(a, b) {
+    return a - b;
+  });
+
+  for (var a = 0; a < arr.length; a++) {
+    if (arr[a] >= num)
+      return parseInt(a);
+  }
+
+  return arr.length;
+}
+```
+
+# Code Explanation:
+- First I sort the array using `.sort(callbackFuntion)` to sort it by lowest to highest, from left to right.
+- Then I use a for loop to compare the items in the array starting from the smallest one. When an item on the array is greater than the number we are comparing against, then we return the index as an integer.
+
+## Code Solution 2:
+
+```js
+function where(arr, num) {
+  arr.push(num);
+  arr.sort(function(a, b)
+           {return a-b;}
+          );
+  return arr.indexOf(num);
+ }
+```
+
+# Code Explanation:
+- First insert the number into the array using the `Array.push()` method.
+- Then use the numerical sort method to sort the elements of the array. in the end just return the index value of the number that was push earlier using the `Array.indexOf()` method.
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 and @rahul1992 for your help with Bonfire: Where do I belong`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Algorithm-Wiki-Template.md b/Algorithm-Wiki-Template.md
new file mode 100644
index 0000000..a4dd0cf
--- /dev/null
+++ b/Algorithm-Wiki-Template.md
@@ -0,0 +1,49 @@
+**Foundational Agile Principles:**
+
+**_Individuals and interactions_** over processes and tools
+
+**_Working software _**over comprehensive
+
+_**Customer collaboration**_ over contract negotiation
+
+_**Responding to change **_ over following a plan
+
+
+
+
+## User-Stories
+User stories help us tie the needs of our users directly to features we implement in a
+conversational format. They **always** follow this syntax: _“As a User/Stakeholder , I need/want to be able to Do Something”_. This can result in some awkward stories for the “obvious” features like _“As a user, I need to be able to trust that my credit card information is secure.”_, but it is imperative that ALL features tie back to a story in order to allow us to effectively break the work down into manageable pieces.
+
+## Sprints
+A “Sprint” is a short (1-3 weeks) development cycle during which a number of stories or subtasks are targeted for completion by the end of the sprint. The idea behind “Sprinting” is to allow us to **deliver** a story to the project champion for feedback/approval. This iterative workflow ensures we get continuous buy-in from the project champion and we are delivering functionality that both works, and is valuable.
+
+## SCRUM
+At a basic level, SCRUM helps us stay focused and informed about what the status is on each assigned task as well as break down communication barriers. In many professional settings the work day begins with a “Daily Scrum”.  We will be following a weekly scrum to align with our sprints.  A common scrum failure is to attempt to problem solve during a scrum. Troubleshooting and brainstorming should always be done as a separate task from SCRUM.
+
+## Spoiler Alert!
+[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
+
+**Solution ahead!**
+
+## Code Solution:
+
+```js
+code here
+```
+
+# Code Explanation:
+- Explain your code here
+
+# Credits:
+If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @username1 @username2 @yourusername for your help with Bonfire: Name of the Bonfire`**
+
+> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
+
+## Here you can add any other information that is helpful or related.
+- Right here.
+
+### Important notes about this template.
+- This template can also be used for regular pages.
+- The author part has been removed. This is a collaboration page, while people can see who contributed by checking the revision, using the code for the credits will also benefit the contributors and your name will be there, so there is no longer any need to add your picture or links.
+- If you have suggestions or comments about this template, feel free to contact [@Rafase282 in Gitter](https://gitter.im/Rafase282)
\ No newline at end of file
diff --git a/Back-End-Project-Resources.md b/Back-End-Project-Resources.md
new file mode 100644
index 0000000..1549eab
--- /dev/null
+++ b/Back-End-Project-Resources.md
@@ -0,0 +1,36 @@
+The curriculum lead-up to the first Basejump is not very comprehensive.  Here are a number of common resources which other campers have found helpful.
+
+### Getting Started with Basejumps
+* https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Intro-to-Yeoman-Angular-Fullstack-Basejumps - Lots of helpful tips and tricks for the Yeoman Angular Fullstack setup
+* https://github.com/DaftMonk/generator-angular-fullstack#generators - Generator used by Yeoman, you can find syntax and what files it creates
+
+### APIs
+* API for Charting the stock market: https://www.quandl.com/help/api
+
+### MEAN Stack Tutorials & Videos
+* 5 Part Series on setting up a MEAN stack 
+https://www.youtube.com/watch?v=kHV7gOHvNdk
+
+* A MEAN tutorial that creates a simple Twitter clone
+https://channel9.msdn.com/Series/MEAN-Stack-Jump-Start
+
+* Clementine is a stripped down MEAN stack, great for learning the fundamentals.  
+https://johnstonbl01.github.io/clementinejs/tutorials/tutorial-beginner.html
+
+* Authentication with Passport for the MEAN stack:
+https://vickev.com/#!/article/authentication-in-single-page-applications-node-js-passportjs-angularjs
+
+* An amazing list of resources for learning the MEAN stack:
+https://github.com/ericdouglas/MEAN-Learning
+
+### Scotch IO Tutorials
+* https://scotch.io/tutorials/setting-up-a-mean-stack-single-page-application   
+* https://scotch.io/tutorials/node-and-angular-to-do-app-application-organization-and-structure
+
+### Node/Express
+* [Online Debugging for Node.js/Express](http://stackoverflow.com/a/16512303/1420506)
+
+### Cloud 9 Tricks
+##### Speed up browser reloads
+1. Open gruntfile.js and edit both instances of `livereload: true` to `livereload: false`.
+2. Open server/config/express.js and comment out the line `app.use(require('connect-livereload')());`
\ No newline at end of file
diff --git a/Basejump-Resources.md b/Basejump-Resources.md
deleted file mode 100644
index 1549eab..0000000
--- a/Basejump-Resources.md
+++ /dev/null
@@ -1,36 +0,0 @@
-The curriculum lead-up to the first Basejump is not very comprehensive.  Here are a number of common resources which other campers have found helpful.
-
-### Getting Started with Basejumps
-* https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Intro-to-Yeoman-Angular-Fullstack-Basejumps - Lots of helpful tips and tricks for the Yeoman Angular Fullstack setup
-* https://github.com/DaftMonk/generator-angular-fullstack#generators - Generator used by Yeoman, you can find syntax and what files it creates
-
-### APIs
-* API for Charting the stock market: https://www.quandl.com/help/api
-
-### MEAN Stack Tutorials & Videos
-* 5 Part Series on setting up a MEAN stack 
-https://www.youtube.com/watch?v=kHV7gOHvNdk
-
-* A MEAN tutorial that creates a simple Twitter clone
-https://channel9.msdn.com/Series/MEAN-Stack-Jump-Start
-
-* Clementine is a stripped down MEAN stack, great for learning the fundamentals.  
-https://johnstonbl01.github.io/clementinejs/tutorials/tutorial-beginner.html
-
-* Authentication with Passport for the MEAN stack:
-https://vickev.com/#!/article/authentication-in-single-page-applications-node-js-passportjs-angularjs
-
-* An amazing list of resources for learning the MEAN stack:
-https://github.com/ericdouglas/MEAN-Learning
-
-### Scotch IO Tutorials
-* https://scotch.io/tutorials/setting-up-a-mean-stack-single-page-application   
-* https://scotch.io/tutorials/node-and-angular-to-do-app-application-organization-and-structure
-
-### Node/Express
-* [Online Debugging for Node.js/Express](http://stackoverflow.com/a/16512303/1420506)
-
-### Cloud 9 Tricks
-##### Speed up browser reloads
-1. Open gruntfile.js and edit both instances of `livereload: true` to `livereload: false`.
-2. Open server/config/express.js and comment out the line `app.use(require('connect-livereload')());`
\ No newline at end of file
diff --git a/Bonfire-Arguments-Optional.md b/Bonfire-Arguments-Optional.md
deleted file mode 100644
index 2bfe308..0000000
--- a/Bonfire-Arguments-Optional.md
+++ /dev/null
@@ -1,121 +0,0 @@
-![](http://i.imgur.com/63Iaec6.jpg)
-
-# Explanation:
-It can be quite complicated to understand what needs to be done. There are always many ways to do something when coding but regardless of the algorithm used,  we have to create a program that does the following:
-- It has to add two numbers passed as parameters and return the sum.
-- It has to check if any of the numbers are actual numbers, otherwise return **undefined** and stop the program right there.
-- It has to check if it has one or two arguments passed. More are ignored.
-- If it has only one argument then it has to return a function that uses that number and expects another one, to then add it.
-
-## Hint: 1
-Every time you deal with an argument, you have to check if it is a number or not. For this a function that handles this task will save you repeated code.
-
-## Hint: 2
-When working on the case that it needs to return the function, it is wise to check if the first and only argument is a number again and base the code on that.
-
-## Hint: 3
-In the case that only one argument was passed, do not worry about how to prompt input for the second one, just make the function definition properly and things will work out the way they should.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function add() {
-  // Function to check if a number is actually a number
-  // and return undefined otherwise.
-  var checkNum = function(num) {
-    if (typeof num !== 'number') {
-      return undefined;
-    } else
-      return num;
-  };
-
-  // Check if we have two parameters, check if they are numbers
-  // handle the case where one is not
-  // returns the addition.
-  if (arguments.length > 1) {
-    var a = checkNum(arguments[0]);
-    var b = checkNum(arguments[1]);
-    if (a === undefined || b === undefined) {
-      return undefined;
-    } else {
-      return a + b;
-    }
-  } else {
-    // If only one parameter was found, returns a new function that expects two
-    // Store first argument before entering the new function scope
-    var c = arguments[0];
-
-    // Check the number again, must be outside the function to about returning an object
-    // instead of undefined.
-    if (checkNum(c)) {
-      // Return function that expect a second argument.
-      return function(arg2) {
-        // Check for non-numbers
-        if (c === undefined || checkNum(arg2) === undefined) {
-          return undefined;
-        } else {
-          // if numbers then add them.
-          return c + arg2;
-        }
-      };
-    }
-  }
-}
-```
-
-# Code Explanation:
-- First, I create a function with the sole purpose of checking if a number is actually a number and returns undefined if it is not. It uses **typeof** to check.
-- Check if we have two parameters, if so, then check if they are numbers or not using the **checkNum** function I created.
-- If they are not **undefined** then add them and return the addition. If they any of them is undefined then return undefined.
-- In the case that we only have one argument, then we return a new function that expects two parameters. For this we store the first argument before going into a new scope to avoid our arguments being overwritten.
-- Still inside the big else, we need to check the argument we saved, if it is a number then we return the function expecting a second argument.
-- Now inside the function we are returning, we have to check for non numbers again just as at the beginning using **checkNum** if undefined then return that, otherwise if numbers add them and return the addition.
-
-## Second Solution:
-
-```js
-function add() {
-  var args = new Array(arguments.length);
-  //Storing the arguments in an array
-  for(var i = 0; i < args.length; ++i) {
-      args[i] = arguments[i];
-    }
- //Check for the arguments length
- if(args.length == 2){
-    //If there are two arguments,check for the type of both arguments
-    //Use typeof to check the type of the argument(both should be numbers)
-    if(typeof args[0] !== 'number' || typeof args[1] !=='number' ){
-      return undefined;
-      }
-    return args[0]+args[1];
-   }
- //When only one argument is provided
- if(args.length == 1){
-     a= args[0];
-     //Check the  argument using typeof 
-    if(typeof a!=='number'){
-        return undefined;
-      }
-    else{
-       //Making use of closures 
-       return function(b){
-       //Checking the second argument 
-         if(typeof b !=='number'){
-           return undefined;
-           }
-         else
-           return a+b;
-          };
-      }
-    }
-}
-```
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @coded9 for your help with Bonfire: Arguments Optional`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Binary-Agents.md b/Bonfire-Binary-Agents.md
deleted file mode 100644
index 33739b0..0000000
--- a/Bonfire-Binary-Agents.md
+++ /dev/null
@@ -1,120 +0,0 @@
-![](http://i.imgur.com/HSwaSFK.jpg)
-
-# Explanation:
-This problem is very straight forward, you will get a string that will represent a sentence in binary code, and you need to translate that into words. There is not direct way to do this so you will have to translate twice.
-
-## Hint: 1
-You should first convert from **binary** to **decimal** before translating those values into characters
-
-## Hint: 2
-Things are easier when focusing on smaller parts, divide the input to focus on one letter at the time.
-
-## Hint: 3
-Make sure that each time you transcode a character from binary to decimal, you reset whatever variable you used to keep track of the ones. Also do not forget to turn everything back into one string.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution 1:
-
-```js
-function binaryAgent(str) {
-  biString = str.split(' ');
-  uniString = [];
-  
-/*using the radix (or base) parameter in parseInt, we can convert the binary 
-  number to a decimal number while simultaneously converting to a char*/
-
-   for(i=0;i < biString.length;i++){
-   uniString.push(String.fromCharCode(parseInt(biString[i], 2))); 
-  }
-//we then simply join the string
-  return uniString.join('');
-}
-```
-# Code Explanation:
-- Separate the string into an array of strings separated by whitespace.
-- Create some variables that will be needed along the way, the names are self explanatory for the most part.
-- Iterate through each binary string in the new array.
-- Convert to decimal by using parseInt(*binary*, 2) (with the second parameter we tell in which base our numbers currently are) 
-- At the end, we return out converted message.
-
-## Code Solution 2:
-
-```js
-function binaryAgent(str) {
-  // Separate the binary code by space.
-  str = str.split(' ');
-  var power;
-  var decValue = 0;
-  var sentence = '';
-
-  // Check each binary number from the array.
-  for (var s = 0; s < str.length; s++) {
-    // Check each bit from binary number
-    for (var t = 0; t < str[s].length; t++) {
-      // This only takes into consideration the active ones.
-      if (str[s][t] == 1) {
-        // This is quivalent to 2 ** position
-        power = Math.pow(2, +str[s].length - t - 1);
-        decValue += power;
-
-        // Record the decimal value by adding the number to the previous one.
-      }
-    }
-
-    // After the binary number is converted to decimal, convert it to string and store
-    sentence += (String.fromCharCode(decValue));
-
-    // Reset decimal value for next binary number.
-    decValue = 0;
-  }
-
-  return sentence;
-}
-```
-# Code Explanation
-- For each of these binary strings, check for the ones and ignore the zeroes.
-- For those that are one or active then convert them to decimal, this takes into account the position and the right power it needs to be raised to.
-- Store the power into the **power** variable by adding it to any previous ones on the variable **decValue**. This variable will add and add the powers of the active ones until the end of the loop and then return the decimal number.
-- Convert the final decimal outside of the inner loop and then convert it to ASCII and saving it to **sentence** along with any other text string already converted and stored.
-- Reset the variable **decValue** to avoid getting wrong decimals before continuing to the outer loop.
-
-## Code Solution 3:
-
-```js
-function binaryAgent(str) {
-  return String.fromCharCode(...str.split(" ").map(function(char){ return parseInt(char, 2); }));
-}
-```
-
-# Code Explanation
-- First we use `split()` to be able to work on each character as an Array element
-- Then use `map()` to process each element  from binary to decimal using `pareseInt()`
-- Last we can use `String.fromCharCode()` to convert each ASCII number into the corresponding character
-- However `fromCharCode()` expects a series of numbers rather than an Array! We can use ES6 Spread Operator to pass in an Array of numbers as individual numbers. See here for more info; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator
-
-## Code Solution 4:
-
-```js
-function binaryAgent(str) {
-  var re = /(\d+)(\s?)/g;
-  function convertToChar(match,p1,p2){
-    return String.fromCharCode(parseInt(p1, 2));
-  }
-  return str.replace(re, convertToChar);
-}
-```
-
-# Code Explanation
-- In this solution we use `String.replace()` to find all the binary numbers and convert them to characters
-- First we use a regular expression to find all the binary numbers and optional trailing spaces
-- Then we define a function that converts the first parenthesized submatch into a number `parseInt()` and then into a character`String.fromCharCode()`. By not using the second parenthisized submatch we leave out all the spaces that where in between the binary numbers.
-- Lastly we use our defined regex and function in the `String.replace()` function.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`thanks @Rafase282 @JamesKee @sabahang @crisvdkooij for your help with Bonfire: Binary Agents`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Boo-who.md b/Bonfire-Boo-who.md
deleted file mode 100644
index 69fc52c..0000000
--- a/Bonfire-Boo-who.md
+++ /dev/null
@@ -1,36 +0,0 @@
-![](http://i.imgur.com/CgROCEF.jpg)
-
-# Problem Explanation:
-- This program is very simple, the trick is to understand what a boolean primitive is. The programs requires a true or false answer.
-
-## Hint: 1
-- You will need to check for the type of the parameter to see if it is a boolean.
-
-## Hint: 2
-- To check for the type of a parameter, you can use `typeof`
-
-## Hint: 3
-- Since you must return true or false you can use if statements or just have it return the boolean used for the if statement.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function boo(bool) {
-  return typeof bool === 'boolean';
-}
-```
-
-# Code Explanation:
-
-Uses the operator `typeof` to check if the variable is a boolean.
-If it is, it will return `true`. Otherwise, if it is any other type it will return `false`.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 for your help with Bonfire: Boo-who`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Caesars-Cipher.md b/Bonfire-Caesars-Cipher.md
deleted file mode 100644
index 4c01b3d..0000000
--- a/Bonfire-Caesars-Cipher.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# Problem Explanation:
-- You need to write a function, which will take string encoded with
-*Caesar cipher* as a parameter and decode it.
-- The one used here is ROT13 where the value of the letter is
-shifted by 13 places.
-e.g. 'A' ↔ 'N', 'T' ↔ 'G'.
-- You have to shift it back 13 positions, such that 'N' ↔ 'A'.
-
-## Hint: 1
-Use *String.charCodeAt()* to convert the English character to ASCII.
-
-
-## Hint: 2
-Use *String.fromCharCode()* to convert ASCII to English character.
-
-## Hint: 3
-Leave anything that doesn't come between A-Z as it is.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-#### First solution
-
-```js
-function rot13(str) {
-    var nstr="";
-    for(var i=0; i<str.length; i++){
-        //Checks if character lies between A-Z
-        if(str.charCodeAt(i) < 65 || str.charCodeAt(i) > 91) {
-            nstr += String.fromCharCode(str.charCodeAt(i));
-            continue;
-        }
-        //N = ASCII 78, if the character code is less than 78, shift forward 13 places
-        if(str.charCodeAt(i) < 78){
-            nstr += String.fromCharCode(str.charCodeAt(i) + 13);
-        }
-        else{
-            //Otherwise shift the character 13 places backward
-            nstr += String.fromCharCode(str.charCodeAt(i) - 13);
-
-        }
-    }
-
-    return nstr;
-}
-```
-
-#### Second solution (advanced)
-
-```js
-function rot13(str) {
-  // Split str into a character array
-  return str.split('')
-  // Iterate over each character in the array
-    .map.call(str, function(char) {
-      // Convert char to a character code
-      x = char.charCodeAt(0);
-      // Checks if character lies between A-Z
-      if (x < 65 || x > 91) {
-        return String.fromCharCode(x);  // Return un-converted character
-      }
-      //N = ASCII 78, if the character code is less than 78, shift forward 13 places
-      else if (x < 78) {
-        return String.fromCharCode(x + 13);
-      }
-      // Otherwise shift the character 13 places backward
-      return String.fromCharCode(x - 13);
-    }).join('');  // Rejoin the array into a string
-}
-```
-
-# Code Explanation:
-#### First solution
-- A string variable `nstr` is declared and initialized to store the
-decoded string.
-- The for loop is used to loop through each character of the input string.
-- If the character is not uppercase English alphabets(i.e. its ascii doesn't lie between 65 and 91 ), we'll leave it
-as it is and [continue](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue) with next iteration.
-- If it's the uppercase English alphabet, we'll subtract 13 from it's
-ascii code.
-- If the ascii code is less than 78, it'll get out of
-range when subtracted by 13 so we'll add 26(number of letters in
-        English alphabets) to it so that after A it'll go back to Z.
-e.g. M(77) ↔ 77-13 = 64(Not an English alphabet) +26 = 90 ↔ Z(90)
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @anuragaryan and @SaintPeter for your help with Bonfire: Caesar's Cipher`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Check-for-Palindromes.md b/Bonfire-Check-for-Palindromes.md
deleted file mode 100644
index 322a55e..0000000
--- a/Bonfire-Check-for-Palindromes.md
+++ /dev/null
@@ -1,105 +0,0 @@
-![](http://i.imgur.com/ozDWKEi.jpg)
-
-# Explanation:
-Our goal for solving this problem is tidying up the string passed in, and checking whether it is in fact a palindrome.
-- If you are unsure of what a palindrome is, it is a word or phrase that when reversed spells the same thing forwards or backwards. A simple example is `mom`, when you reverse the letters, it spells the same thing! Another example of a palindrome is `race car`. When we take out anything that is not a character it becomes `racecar` which is the same spelled forwards or backwards!
-
-Once we have determined whether it is a palindrome or not we want to return either `true` or `false` based on our findings.
-
-## Hint: 1
-Regular expressions, `RegEx`, can be used to remove unwanted characters from the string.
-- [http://devdocs.io/#q=js+RegExp](http://devdocs.io/#q=js+RegExp)
-
-## Hint: 2
-The `Array.prototype.split` and `Array.prototype.join` methods can be of use here. `For` and `while` loops are another alternative, or why not even `map`!
-- [http://devdocs.io/#q=js+String+split](http://devdocs.io/#q=js+String+split)
-- [http://devdocs.io/#q=js+Array+join](http://devdocs.io/#q=js+Array+join)
-- [http://devdocs.io/#q=js+for](http://devdocs.io/#q=js+for)
-
-## Hint: 3
-`String.prototype.toLowerCase` can be used to make a string lowercase.
-- [http://devdocs.io/#q=js+String+toLowerCase](http://devdocs.io/#q=js+String+toLowerCase)
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## First Solution
-
-```js
-function palindrome(str) {
-  return str.replace(/[\W_]/g, '').toLowerCase() ===
-         str.replace(/[\W_]/g, '').toLowerCase().split('').reverse().join('');
-}
-```
-
-## Second Solution
-
-```js
-function palindrome(str) {
-  str = str.toLowerCase().replace(/[\W_]/g, '');
-  for(var i = 0, len = str.length - 1; i < len/2; i++) {
-    if(str[i] !== str[len-i]) {
-      return false;
-    }
-  }
-  return true;
-}
-```
-
-## Third Solution
-(using recursion)
-```js
-function palindrome(str) {
-// make all letters lowercase and remove non-alphanumeric characters
-  str = str.toLowerCase().replace(/[^a-z|1-9]/g, "");
-
-  // if the length of the string is 0 then it is a palindrome
-  if (str.length === 0){
-    return true;
-  }
-  // if the first letter and the last letter of the string
-  // do not equal each other, then it is not a palindrome
-  if (str[0] !== str[str.length-1]){
-    return false;
-  }
-  //Else, run the function without the first and last characters.
-  else{
-    return palindrome(str.slice(1,str.length - 1));
-  }
-}
-```
-
-# Code Explanation:
-
-## First Solution
-- We start by using regular expressions to replace any white space or non-alphanumeric characters with nothing (or `null`), which essentially removes them from the string.
-
-- Next we *chain* `.toLowerCase()` to remove any capital letters because `A` is a different character than `a`. The problem did not ask us to worry about making sure the case of the characters was identical, just the spelling.
-
-- Our next step is to take our string and `.split()` it, `.reverse()` it, and finally `.join()` it back together.
-
-- Last step is to check that the string is the same forwards and backwards and return our result!
-
-## Second solution
-- We start by using the same methods of replacing characters we don't want in the string using `RegEx`'s, regular expressions, and then make our string lowercase.
-
-- Next we set up our `for` loop and declare an index `i` to keep track of the loop. We set our escape sequence to when `i` is greater than the length of the string divided by two, which tells the loop to stop after the halfway point of the string. And finally we set `i` to increment after every loop.
-
-- Inside of each loop we want to check that the letter in element `[i]` is equal to the letter in the length of the string minus i, `[str.length - i]`. Each loop, the element that is checked on both sides of the string moves closer to the center until we have checked all of the letters. If at any point the letters do not match, we return `false`. If the loop completes successfully, it means we have a palindrome and therefore we return `true`!
-
-## Third Solution
-
-- This solution uses the power of recursion instead of a for loop! Our first step is to once again use `RegEx`'s to remove any characters that we do not want in the string, like whitespace or non-alphanumeric characters.
-
-- Our next step is check if the length of the string is 0, if it is we return `true` because it is a palindrome. (this will make a little more sense after you read all the steps).
-
-- Next we want to check that the first and last elements of the string are the same. If they are not the same, we return false which exits the function, and breaks out of the recursive loop.
-
-- If neither of the first two conditions are met, then we assume that the two characters are equal, and we return a recursive call to the function. The difference here is that we pass the current value of `str` and we slice the first and last elements off the string. This process continues until there are no characters left to check!
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @abhisekp @shadowfool for your help with Bonfire: Check for Palindromes`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Chunky-Monkey.md b/Bonfire-Chunky-Monkey.md
deleted file mode 100644
index c8630c9..0000000
--- a/Bonfire-Chunky-Monkey.md
+++ /dev/null
@@ -1,140 +0,0 @@
-![](http://i.imgur.com/RdrnNvA.png)
-
-# Explanation
-Our goal for this bonfire is to split `arr` (first argument) into smaller chunks of arrays with the length provided by `size` (second argument). There are 4 green checks (objectives) our code needs to pass in order to complete this bonfire:
-1. `(['a', 'b', 'c', 'd'], 2)` is expected to be `[['a', 'b'], ['c', 'd']]`
-2. `([0, 1, 2, 3, 4, 5], 3)` is expected to be `[[0, 1, 2], [3, 4, 5]]`
-3. `([0, 1, 2, 3, 4, 5], 2)` is expected to be `[[0, 1], [2, 3], [4, 5]]`
-4. `([0, 1, 2, 3, 4, 5], 4)` is expected to be `[[0, 1, 2, 3], [4, 5]]`
-
-Click **More information** under the bonfire title and read the helpful links if you haven't yet.   
-
-## How to approach the bonfire
-The helpful links suggest to use `Array.push()` so let's start by first creating a new array to store the smaller arrays we will soon have like this:
-
-```js
-var newArray = [];
-```
-
-  Next we'll need a `for loop` to loop through `arr` then finally we need a method to do the actual splitting and we can use `Array.slice()` to do that. The key to this bonfire is understanding how a `for loop`, `size`, `Array.slice()` and `Array.push()` all work together.  
-
-# How does a for loop and Array.slice() work
-**For Loop**
-
-A `for loop` keeps looping until a condition evaluates to false for example if we had:
-
-```js
-for (var i = 0; i < arr.length; i++)
-```
-
-  `i` starts with a value of 0, `i` loops until `i` is no longer less than the length of `arr` and during each repeat loop, the value of `i` increases by 1 (one). If `arr.length` happens to be 4 then the `for loop` stops right before `i` reaches 4.  
-
-**Array.slice() Method**
-
-`Array.slice()` method extracts a portion of an array and returns a copy into a new array. We can declare which element to start and which element to stop. For example, if `arr` is `['a', 'b', 'c', 'd']` and we used `arr.slice(1, 3);`, the `Array.slice()` method starts at element 1 and stops at element 3 then returns:
-
-```js
-["b","c"]
-```
-
-_Notice how it captures the start element but doesn't capture the stop element._  
-
-# Using a for loop and Array.slice() together
-If we use the following `for loop` while `size` is 2 (note: `size` = 2):
-
-```js
-(var i = 0; i < arr.length; i += size)
-```
-
-  The loop starts at element 0, loops once then `i += 2` which is another way of stating `i = i + 2` so now the new value of `i` becomes 2. What happens if we combine the following `arr.slice()` with the `for loop`?
-
-```js
-arr.slice(i, i + size)
-```
-
-# Push the arrays out
-We can combine the `Array.slice()` method with the `Array.push()` method inside the `for loop` like this:
-
-```js
-for (var i = 0; i < arr.length; i += size) {
-newArray.push(arr.slice(i, i + size));
-}
-```
-
-  `arr.slice()` will start at element 0 and stop at element 2. Here's the fun part: once the `for loop`, loops again then the value of `i` becomes 2 while the `i` in the `arr.slice()` will also have a value of 2. The new `arr.slice()` becomes:
-
-```js
-arr.slice(2, 2 + 2)
-```
-
-  Now `arr.slice()` starts at the element 2 and stops at element 4 and in the next loop, `arr.slice()` will start at element 4 and stop at element 6. `newArray.push()` will push all the elements out into chunks of smaller arrays with the length of `size`.
-  
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**  
-
-## Code Solution:
-
-#### Solution 1:
-
-```js
-function chunk(arr, size) {
-
-  var temp = [];
-  var result = [];
-
-  for (var a = 0; a < arr.length; a++) {
-    if (a % size !== size - 1)
-      temp.push(arr[a]);
-    else {
-      temp.push(arr[a]);
-      result.push(temp);
-      temp = [];
-    }
-  }
-
-  if (temp.length !== 0)
-    result.push(temp);
-  return result;
-}
-```
-
-#### Solution 2:
-
-```js
-function chunk(arr, size) {
-  // Break it up
-  // It's already broken :(
-  arr = arr.slice();
-  var arr2 = [];
-  for(var i = 0, len = arr.length; i < len; i+=size) {
-    arr2.push(arr.slice(0, size));
-    arr = arr.slice(size);
-  }
-  return arr2;
-}
-```
-
-#### Solution 3:
-
-```js
-function chunk(arr, size) {
-  // Break it up.
-  var newArr = [];
-  var i = 0;
-  
-  while (i < arr.length) {
-    newArray.push(arr.slice(i, i+size));
-    i += size;
-  }
-  return newArr;
-}
-chunk(["a", "b", "c", "d"], 2);
-```
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @kirah1314 @Rafase282 @jsommamtek for your help with Bonfire: Chunky Monkey`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
-
diff --git a/Bonfire-Confirm-the-Ending.md b/Bonfire-Confirm-the-Ending.md
deleted file mode 100644
index b3870ab..0000000
--- a/Bonfire-Confirm-the-Ending.md
+++ /dev/null
@@ -1,34 +0,0 @@
-![](http://i.imgur.com/Z7vhddH.jpg)
-
-# Explanation:
-The function is a whole Boolean operation. You need to return true if the first argument ends with the second argument. This means that for the problem script, it should return true for the `end('Bastian', 'n'); case.`
-
-## Hint: 1
-Take a look at how substr() works. You will be trying to get the last Nth characters.
-
-## Hint: 2
-To get the Nth-to-Last character you will use length() and turn it into a negative number.
-
-## Hint: 3
-Check that you have the proper syntax and that you use `===` to compare.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function end(str, target) {
-  return str.substr(-target.length) === target;
-}
-```
-
-# Code Explanation:
-We use the subtring() with the negative value of the lengths of target. We could use -1 to get the last element but if the target is actually longer than one letter then the program will provide the wrong information. Then we return the value of this boolean expression.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 for your help with Bonfire: Confirm the Ending`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
\ No newline at end of file
diff --git a/Bonfire-Convert-HTML-Entities.md b/Bonfire-Convert-HTML-Entities.md
deleted file mode 100644
index 57dc74c..0000000
--- a/Bonfire-Convert-HTML-Entities.md
+++ /dev/null
@@ -1,88 +0,0 @@
-![](http://i.imgur.com/g7sWL1I.jpg)
-
-# Problem Explanation:
-- You have to create a program that will convert HTML entities from string to their corresponding HTML entities. There are only a few so you can use different methods.
-
-## Hint: 1
-- You can use regular Expressions however I didn't in this case.
-
-## Hint: 2
-- You will benefit form a chart with all the html entities so you know which ones are the right ones to put.
-
-## Hint: 3
-- You should separate the string and work with each character to convert the right ones and then join everything back up.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function convert(str) {
-  // Split by character to avoid problems.
-
-  var temp = str.split('');
-
-  // Since we are only checking for a few HTML elements I used a switch
-
-  for (var i = 0; i < temp.length; i++) {
-    switch (temp[i]) {
-      case '<':
-        temp[i] = '&lt;';
-        break;
-      case '&':
-        temp[i] = '&amp;';
-        break;
-      case '>':
-        temp[i] = '&gt;';
-        break;
-      case '"':
-        temp[i] = '&quot;';
-        break;
-      case "'":
-        temp[i] = '&apos;';
-        break;
-    }
-  }
-
-  temp = temp.join('');
-  return temp;
-}
-```
-
-##Another Solution
-```js
-function convert(str) {
-    
-    //map of key:value pairs
-    var html = {
-       "&":"&amp;",
-       "<":"&lt;",
-       ">":"&gt;",
-       "\"":"&quot;",
-       "\'":"&apos;"
-    };
-        str = str.replace(/&|<|>|"|'/gi, function(matched){
-        return html[matched];
-        });
-
-  return str;
-}
-```
-##Another Solution
-```js
-function convert(str) {
-//Chaining of replace method with different arguments
-  str = str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&apos;');
-return str;
-}
-```
-# Code Explanation:
-- Read comments in code.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @jhalls for your help with Bonfire: Convert HTML Entities`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-DNA-Pairing.md b/Bonfire-DNA-Pairing.md
deleted file mode 100644
index 2201dc9..0000000
--- a/Bonfire-DNA-Pairing.md
+++ /dev/null
@@ -1,81 +0,0 @@
-![](http://i.imgur.com/usiNBDU.jpg)
-
-# Problem Explanation:
-- You will get a DNA strand sequence and you need to get the pair and return it as a 2D array of the base pairs. Keep in mind that the provided strand should be first always.
-
-## Hint: 1
-- There are two base case, A-T and C-G, these go both way. You can use regular expression, if statements of anything that you can think of.
-
-## Hint: 2
-- I would recommend using a switch, as it makes things a lot smoother.
-
-## Hint: 3
-- The result must be an array of arrays, so keep that in mind when pushing things.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-### Solution 1
-```js
-function pair(str) {
-  // Return each strand as an array of two elements, the original and the pair.
-  var paired = [];
-
-  // Function to check with strand to pair.
-  var search = function(char) {
-    switch (char) {
-      case 'A':
-        paired.push(['A', 'T']);
-        break;
-      case 'T':
-        paired.push(['T', 'A']);
-        break;
-      case 'C':
-        paired.push(['C', 'G']);
-        break;
-      case 'G':
-        paired.push(['G', 'C']);
-        break;
-    }
-  };
-
-  // Loops through the input and pair.
-  console.log(char);
-  for (var i = 0; i < str.length; i++) {
-    search(str[i]);
-  }
-
-  return paired;
-}
-```
-# Code Explanation:
-- The program is very simple, the best solution that I have come up with is to use a switch to catch all the possible four elements. Using if statements would take too much code. You could also use Regular Expressions.
-- Since we have to the original and the pair, I decided to take all four cases instead of the base two.
-- Create an empty array and use the `search` function to push the right values to the array and return them.
-
-### Solution 2
-```js
-function pair(str) {
-  //define a map object with all pair possibilities 
-  var map = {T:'A', A:'T', G:'C', C:'G'};
-  //split str into a a char Array
-  strArr = str.split('');
-  //replace each Array item with a 2d Array using map
-  for (var i=0;i<strArr.length;i++){
-    strArr[i]=[strArr[i], map[strArr[i]]];
-  }
- return strArr;
-}
-```
-
-# Code Explanation:
-- Read the comments
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @sabahang for your help with Bonfire: DNA Pairing`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Diff-Two-Arrays.md b/Bonfire-Diff-Two-Arrays.md
deleted file mode 100644
index 2dec4b8..0000000
--- a/Bonfire-Diff-Two-Arrays.md
+++ /dev/null
@@ -1,81 +0,0 @@
-![](http://i.imgur.com/HkEgef5.gif)
-
-# Explanation:
-Check two arrays and return a new array that contains only the items that are not in either of the original arrays.
-
-## Hint: 1
-- Merge the list to make it easy to compare functions.
-
-## Hint: 2
-- Use filter to get the new array, you will need to create a callback function.
-
-## Hint: 3
-- The best way to go about the callback function is to check if the number from the new merged array is not in **both** original arrays and return it.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function diff(arr1, arr2) {
-  var newArr = arr1.concat(arr2);
-
-  function check(item) {
-    if (arr1.indexOf(item) === -1 || arr2.indexOf(item) === -1) {
-      return item;
-    }
-  }
-
-  return newArr.filter(check);
-}
-```
-
-## Code Solution 2:
-
-```js
-function diff(arr1, arr2) {
-  // Same, same; but different.
-  var newArr = arr1.filter(function (el) {
-    return arr2.indexOf(el) === -1;
-    
-    // concat the previous output of filter method
-    // with the next output of filter method
-  }).concat(arr2.filter(function (el) {
-    return arr1.indexOf(el) === -1;
-  }));
-  return newArr;
-}
-```
-
-## Code Solution 3:
-
-```js
-// This solution runs two times faster than solutions 1 and 2
-function diff(arr1, arr2) {
-  var newArr = [];
-  // Looping through arr1 to find elements that do not exist in arr2  
-  for (var i = 0; i < arr1.length; i++) {
-    if (arr2.indexOf(arr1[i]) === -1){
-      // Pushing the unique to arr1 elements to the newArr
-      newArr.push(arr1[i]);
-    } 
-  }
-  // Looping through arr2 to find elements that do not exist in arr1
-  for (var j = 0; j < arr2.length; j++) {
-    if (arr1.indexOf(arr2[j]) === -1){
-      // Pushing the unique to arr2 elements to the newArr    
-      newArr.push(arr2[j]);
-    } 
-  }
-  
-  return newArr;
-}
-```
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @aganita for your help with Bonfire: Diff Two Arrays`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Drop-it.md b/Bonfire-Drop-it.md
deleted file mode 100644
index 4ddcf4e..0000000
--- a/Bonfire-Drop-it.md
+++ /dev/null
@@ -1,78 +0,0 @@
-![](http://i.imgur.com/goyTFy2.png)
-
-# Explanation:
-Basically while the second argument is not true, you will have to remove the first element from the left of the array that was passed as the first argument.
-
-## Hint: 1
-You can use Array.shift() or filter that you should be more familiar with to solve this problem in a few lines of code.
-
-## Hint: 2
-Shift returns the element that was removed which we don't really need, all we need is the modified array that is left.
-
-## Hint: 3
-If you still can't figure out how to solve it with shift, then try solving it with filter, and check how filter works, if you become familiar with it, then you can make the code with shift.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution 1:
-
-```js
-function drop(arr, func) {
-  // Drop them elements.
-  var times = arr.length;
-  for (var i = 0; i < times; i++) {
-    if (func(arr[0])) {
-      break;
-    } else {
-      arr.shift();
-    }
-  }
-  return arr;
-}
-drop([1, 2, 3], function(n) {return n < 3; });
-```
-
-# Code Explanation:
-- Create a for loop to check each element.
-- Then check for the function given if true then stop, otherwise remove that element.
-- return the array.
-
-
-## Code Solution 2:
-```js
-function drop(arr, func) {
-  return arr.slice(arr.findIndex(func) >= 0 ? arr.findIndex(func): arr.length, arr.length);
-}
-
-drop([1, 2, 3, 4], function(n) {return n >= 3;});
-```
-
-# Code Explanation:
-- Use ES6 `findIndex()` function to  find the index of the element that passes the condition
-- Slice the array from the found index until the end
-- There is one edge case! if the condition is not met against any of the elements 'findIndex' will return `-1` which messes up the input to `slice()`. In this case use a simple conditional operator to return `false` instead of `-1`. And the ternary operator (?:) returns the found index of required elements when the condition is `ture`, and the length of the array otherwise so that the return value is an empty array as is instructed. For more info see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator
-
-
-## Code Solution 3:
-```js
-function drop(arr, func) {
-  while(!func(arr[0])){
-    arr.shift();
-  }
-  return arr;
-}
-
-drop([1, 2, 3], function(n) {return n < 3; });
-```
-
-# Code Explanation
-- Use a while loop with `Array.shift()` to continue checking and dropping the first element of the array until the function returns true.
-- Return the trimmed array.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @sabahang for your help with Bonfire: Drop it`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Everything-be-True.md b/Bonfire-Everything-be-True.md
deleted file mode 100644
index c56825b..0000000
--- a/Bonfire-Everything-be-True.md
+++ /dev/null
@@ -1,76 +0,0 @@
-![](http://i.imgur.com/oKEJJJI.jpg)
-
-# Explanation:
-The program needs to check if the second argument is a [truthy](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/js-truthy) element, and it must check this for each object in the first argument.
-
-### Hint: 1
-Remember to iterate through the first argument to check each object.
-
-### Hint: 2
-Only if all of them are truth will we return true, so make sure all of them check.
-
-### Hint: 3
-You could use loops or callbacks functions, there are multiple ways to solve this problem.
-
-### Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solutions ahead!**
-
-## Code Solution using for-in loop & hasOwnProperty:
-
-```js
-function every(collection, pre) {
-  // Create a counter to check how many are true.
-  var counter = 0;
-  // Check for each object
-  for (var c in collection) {
-    // If it is has property and value is truthy
-    if (collection[c].hasOwnProperty(pre) && Boolean(collection[c][pre])) {
-      counter++;
-    }
-  }
-  // Outside the loop, check to see if we got true for all of them and return true or false
-  return counter == collection.length;
-}
-```
-
-### Code Explanation:
-- First I create a counter to check how many cases are actually true.
-- Then check for each object if the value is truthy
-- Outside the loop, I check to see if the counter variable has the same value as the length of **collection**, if true then return **true**, otherwise, return **false**
-
-##  Code Solution using Array.every():
-```js
-function every(collection, pre) {
-  return collection.every(function (element) {
-    return element.hasOwnProperty(pre) && Boolean(element[pre]);
-  });
-}
-```
-
-### Code Explanation:
-- Uses the native "every" method to test whether all elements in the array pass the test.
-- This link will help [Array.prototype.every()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every)
-
-## Code solution using Array.reduce:
-```js
-function every(collection, pre) {
-    return collection.reduce(function(acc, next) {
-        if (next[pre]) {
-            return acc;
-        } else {
-            acc = false;
-            return acc;
-        }
-    },true);
-```
-
-### Code Explanation:
-- Set initial reduce value to true.
-- Change it to false only when there is no key of a given name or it's falsy. Otherwise stick to the initial truthy value. 
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @estevanmaito @HermanFassett for your help with Bonfire: Everything  Be True`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Exact-Change.md b/Bonfire-Exact-Change.md
deleted file mode 100644
index 60528f0..0000000
--- a/Bonfire-Exact-Change.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# Problem Explanation:
-- You have to create a program that will handle when the register does not have enough cash or will have no cash after the transaction. Other than that it needs to return an array of the change in the form of an array, so that will be a 2D array.
-
-## Hint: 1
-- Is easier to handle if you will have to close the register or if you will not have enough money to complete the transaction if you know beforehand how much money is on your register. For this it would be recommended to have a function get the information assigned to a variable.
-
-## Hint: 2
-- Life is easier when you get to know the value of each currency type in the register instead of how much money is composed of that particular currency. So be sure to watch out for that.
-
-## Hint: 3
-- You will have to get as much change from one type before moving to the next from greater value to lesser, and keep going until you have covered the whole change.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-// Create an object which hold the denominations and their values
-var denom = [
-	{ name: 'ONE HUNDRED', val: 100.00},
-	{ name: 'TWENTY', val: 20.00},
-	{ name: 'TEN', val: 10.00},
-	{ name: 'FIVE', val: 5.00},
-	{ name: 'ONE', val: 1.00},
-	{ name: 'QUARTER', val: 0.25},
-	{ name: 'DIME', val: 0.10},
-	{ name: 'NICKEL', val: 0.05},
-	{ name: 'PENNY', val: 0.01}
-];
-
-function drawer(price, cash, cid) {
-    var change = cash - price;
-
-    // Transform CID array into drawer object
-    var register = cid.reduce(function(acc, curr) {
-        acc.total += curr[1];
-        acc[curr[0]] = curr[1];
-        return acc;
-    }, {total: 0});
-    
-    // Handle exact change
-    if(register.total === change) {
-        return 'Closed';
-    }
-    
-    // Handle obvious insufficent funds
-    if(register.total < change) {
-        return 'Insufficient Funds';
-    }
-    
-    // Loop through the denomination array
-    var change_arr = denom.reduce(function(acc, curr) {
-        var value = 0;
-        // While there is still money of this type in the drawer
-        // And while the denomination is larger than the change reminaing
-        while(register[curr.name] > 0 && change >= curr.val) {
-            change -= curr.val;
-            register[curr.name] -= curr.val;
-            value += curr.val;
-            
-            // Round change to the nearest hundreth to deal with precision errors
-            change = Math.round(change * 100) / 100;
-        }
-        // Add this denomination to the output only if any was used.
-        if(value > 0) {
-            acc.push([ curr.name, value ]);
-        }
-        return acc; // Return the current Change Array
-    }, []); // Initial value of empty array for reduce
-  
-  // If there are no elements in change_arr or we have leftover change, return "Insufficient Funds"
-  if(change_arr.length < 1 || change > 0) {
-    return "Insufficient Funds";
-  }
-    
-  // Here is your change, ma'am.
-  return change_arr;
-}
-```
-
-# Code Explanation:
-- Read comments in code.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @SaintPeter for your help with Bonfire: Exact Change`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Factorialize-a-Number.md b/Bonfire-Factorialize-a-Number.md
deleted file mode 100644
index 1db09b4..0000000
--- a/Bonfire-Factorialize-a-Number.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# Problem Explanation:
-Return the factorial of the provided integer. If the integer is represented with the letter n, a factorial is the product of all positive integers less than or equal to n.
-
-Factorials are often represented with the shorthand notation n!
-
-For example: `5! = 1 * 2 * 3 * 4 * 5 = 120`
-
-## Outline
-This one starts easily since `0! = 1`, so you can go ahead and simply `return 1` there.
-
-We can use that as an `if` in order to break the loop we're going to create using a **recursive function**. It will check if the number you gave the function is 0 (which would be the end of your factorial chain). Functions "end" when they return anything. In fact, **all** functions without an explicit `return` statement will return `undefined`.
-
-This is also why **instead** of having *"finished"*, a function is always said to *"have returned"*. And now this...
-
-## Understanding recursion
-Recursion refers to a function repeating (calling) itself. In this case we are basically returning the given number (i.e. 5), multiplied by the function itself but this time the value passed to the _num_ parameter is `num-1` (which initially translates to 4). The very function is going to **run inside itself** interesting, eh?
-
-# Understanding the flow
-The first **returned** value can be visualized better if you think about those parenthesis operations you did in secondary school where you do the math inside every parenthesis from inside out, bracket and square bracket until you get a final result (a total). This time it's the same thing, look at the program flow:
-
-### During the first execution of the function:
-[**num** = 5]
-
-Is 5 _equal_ to 1 or 0? **No** ---> Oki doki, let's continue...
-
-**Returns:**
-
-(**5** _ (_second execution_: **4** _ (_third execution_: **3** _ (_fourth execution_: **2** _ _fifth execution_: **1**))))
-
-What it returns can be viewed as `(5*(4*(3*(2*1))))` or just `5 * 4 * 3 * 2 * 1`, and the function will return the result of that operation: `120`. Now, let's check what the rest of the executions do:
-
-### During the rest of the executions:
-**Second Execution**: 
-_num_ = 5-1 = **4** -> is _num_ 0 or 1? No<br>
---> return the multiplication between 4 and the next result when _num_ is now 4-1.
-
-**Third Execution**: _num_ = 4 - 1 = **3** -> is _num_ 0 or 1? No<br>
---> return the multiplication between 3 and the next result when _num_ is now 3-1.
-
-**Fourth Execution**: _num_ = 3-1 = **2** -> is _num_ 0 or 1? No<br>
---> return the multiplication between 2 and the next result when _num_ is now 2-1.
-
-**Fifth Execution**: _num_ = 2-1 = **1** -> is _num_ 0 or 1? Yep<br>
---> return **1**. And this is where the recursion stops because there are no more executions.
-
-Got it? ;)
-
-![Recursion](http://i61.tinypic.com/28auvsw.jpg)
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```javascript
-function factorialize(num) {
-  if (num === 0) { return 1; }
-  return num * factorialize(num-1);
-}
-
-factorialize(5);
-```
-
-# References
-- **Recursion**: [https://www.codecademy.com/courses/javascript-lesson-205/0/1](https://www.codecademy.com/es/courses/javascript-lesson-205/0/1)
-- **Factorialization**: [https://en.wikipedia.org/wiki/Factorial](https://en.wikipedia.org/wiki/Factorial)
-- **Arithmetic Operators** [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators)
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @luishendrix92 @Rafase282 @hallaathrad for your help with Bonfire: Factorialize a Number`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
-
-```
-           ,,,         ,,,
-          ;"   ^;     ;'   ",
-          ;    s$$$$$$$s     ;
-          ,  ss$$$$$$$$$$s  ,'
-          ;s$$$$$$$$$$$$$$$
-          $$$$$$$$$$$$$$$$$$
-         $$$$P""Y$$$Y""W$$$$$      -{ Happy Camping! }
-         $$$$  p"$$$"q  $$$$$
-         $$$$  .$$$$$.  $$$$
-          $$DcaU$$$$$$$$$$
-            "Y$$$"*"$$$Y"    
-                "$b.$$"
-```
diff --git a/Bonfire-Falsy-Bouncer.md b/Bonfire-Falsy-Bouncer.md
deleted file mode 100644
index 9c26075..0000000
--- a/Bonfire-Falsy-Bouncer.md
+++ /dev/null
@@ -1,48 +0,0 @@
-![](http://i.imgur.com/GluUbAz.jpg)
-
-# Problem Explanation:
-Remove all [falsy](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/js-falsy) values from an array.
-
-## Hint: 1
-Falsy is something which evaluates to FALSE. There are only six falsy values in JavaScript: undefined, null, NaN, 0, "" (empty string), and false of course.
-
-## Hint: 2
-We need to make sure we have all the falsy values to compare, we can know it, maybe with a function with all the falsy values...
-
-## Hint: 3
-Then we need to add a `filter()` with the falsy values function...
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Solution Code:
-
-```js
-function bouncer(arr) {
-  // Don't show a false ID to this bouncer.
-  // I've a hammer fist.
-
-  return arr.filter(Boolean);
-}
-```
-
-```js
-function bouncer(arr) {
-  function isTruthy(arg) {
-    return Boolean(arg);
-  }
-
-  var filteredArray = arr.filter(isTruthy);
-  return filteredArray;
-}
-```
-
-# Code Explanation:
-The `Array.prototype.filter` method expects a function that returns a `Boolean` value which takes a single argument and returns `true` for [truthy](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/js-truthy) value or `false` for [falsy](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/js-falsy) value. Hence we pass the built-in `Boolean` function.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @renelis @abhisekp @Rafase282 for your help with Bonfire: Falsy Bouncer`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Find-The-Longest-Word-in-a-String.md b/Bonfire-Find-The-Longest-Word-in-a-String.md
deleted file mode 100644
index 58b17ac..0000000
--- a/Bonfire-Find-The-Longest-Word-in-a-String.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# Explanation:
-You have to go through each word and figure out which one is the longest and return not the word, but how many characters it has.
-
-## Hint: 1
-You should split the string into an array of words.
-
-## Hint: 2
-You will need to figure out a way to keep track globally of the greatest current length.
-
-## Hint: 3
-Remember how to get the length of elements on the array? `Array[index].length`
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-####First solution
-```js
-function findLongestWord(str) {
-  var words = str.split(' ');
-  var maxLength = 0;
-
-  for (var i = 0; i < words.length; i++) {
-    if (words[i].length > maxLength) {
-      maxLength = words[i].length;
-    }
-  }
-
-  return maxLength;
-}
-```
-
-####Second solution 
-(Using `.reduce()`)
-```js
-function findLongestWord(s) {
-  return s.split(' ')
-          .reduce(function(x,y) {
-                    return Math.max(x, y.length)
-                  }, 0);
-}
-```
-
-#### Third solution
-(Using recursiveness)
-```js
-function findLongestWord(str) {
-
-  //split the string into individual words 
-  //(important!!, you'll see why later)
-  str = str.split(" ");
-  
-  //str only has 1 element left that is the longest element, 
-  //return the length of that element
-  if(str.length == 1){
-    return str[0].length;
-  }
-  
-  //if the first element's length is greater than the second element's (or equal) 
-  //remove the second element and recursively call the function)
-  if(str[0].length >= str[1].length){
-    str.splice(1,1);
-    return findLongestWord(str.join(" "));
-  }
-  
-  //if the second element's length is greater thant the first element's start 
-  //call the function past the first element 
-  if(str[0].length <= str[1].length){
-    // from the first element to the last element inclusive.
-    return findLongestWord(str.slice(1,str.length).join(" "));
-  }
-}
-```
-
-# Code Explanation:
-####First solution
-Take the string and convert it into an array of words. Declare a variable to keep track of the maximum length and loop from 0 to the length of the array of words.
-
-Then check for the longest word by comparing the current word to the previous one and storing the new longest word. At the end of the loop just return the number value of the variable maxLength.
-
-####Second solution
-For more information on `reduce` [click here.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)<br>
-In case you're wondering about that `0` after the callback function, it is used to give an initial value to the `x`, so that `Math.max` will know where to start.
-
-####Third solution
-See the code's inline comments.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @shadowfool @Hallaathrad for your help with Bonfire: Find the Longest Word in a String`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Finders-Keepers.md b/Bonfire-Finders-Keepers.md
deleted file mode 100644
index ca96e4a..0000000
--- a/Bonfire-Finders-Keepers.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# Explanation:
-The problem is quite simple to understand. You will check for each element in the array that is passed in the first argument, if the element plugged in to the function passed as the second argument returns true the first time. We do not care about the second or third one that is true, only the very first one if any. If there are none, then return undefined. This last bit is not explained but it is part of the tests used.
-
-## Hint: 1
-You can use the function directly from the parameter, no need to rename it or anything.
-
-## Hint: 2
-You need to pass an element and record it if the function returns true, for this you just have to pass the element as the parameter for the function.
-
-## Hint: 3
-If no element satisfy the function then you must return **undefined**
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function find(arr, func) {
-  // Make num undefined by default
-  var num;
-
-  // Loop thorugh the array and use the function to check
-  for (var a = 0; a < arr.length; a++) {
-    if (func(arr[a])) {
-      // Store the first case and break the loop
-      num = arr[a];
-      return num;
-    }
-  }
-
-  // otherwise return undefined
-  return num;
-}
-
-find([1, 2, 3, 4], function(num) {
-  return num % 2 === 0;
-});
-```
-
-## Another Code Solution:
-```js
-function find(arr, func) {
-  filterArr = arr.filter(func); //filter array with the function provided
-  
-  return filterArr[0]; //return the first element that returns true, or undefined if no elements return true
-}
-
-find([1, 2, 3, 4], function(num){ return num % 2 === 0; });
-```
-# Code Explanation:
-- To make the code easier, create an undefined variable that will be returned.
-- Loop through the array to check for each element if it satisfy the function. This is done by passing the arr[index of the loop] as the parameter for the function from the second argument.
-- If true, then store the array element, and return it. This will stop the loop. No else needed.
-- If the loop was not broken and it has ended, then return **num** which by default is undefined. This means that none of the elements from the array satisfied the function.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @JamesKee for your help with Bonfire: Finders Keepers`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Friendly-Date-Ranges.md b/Bonfire-Friendly-Date-Ranges.md
deleted file mode 100644
index 77705b9..0000000
--- a/Bonfire-Friendly-Date-Ranges.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# Problem Explanation:
-- Create a program that will take two dates and convert them into a more easy to understand date such as `January 1st, 2017`. It will also check the difference between them, and handles cases with no difference, more than a day, more than a month, more than a year, and more than a month and less than a year respectively.
-
-## Hint: 1
-- Split the string into an array where you get the "YYYY", "MM", "DD"
-
-## Hint: 2
-- You need to handle the case for "st", "nd", and "th". Note that 13 is "th" not "rd".
-
-## Hint: 3
-- If you are using `Date()` to create instances of dates to work with, then use UTC time to avoid errors due to time zone difference between servers.
-
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function friendly(str) {
-
-  var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
-
-  // COnverst a YYYY-MM-DD string into a date object.
-  function convertDate(str) {
-    // Split the dates to work independently.
-    var dateStr = str.split('-');
-
-    // Force the dates into Universal time to avoid issues due to timezones.
-    return (new Date(Date.UTC(dateStr[0], dateStr[1] - 1, dateStr[2])));
-
-  }
-
-  // Handles the case of the day's endings.
-  function dateEnding(val) {
-    switch (val) {
-      case 1:
-      case 21:
-      case 31:
-        return val + 'st';
-      case 2:
-      case 22:
-        return val + 'nd';
-      case 3:
-      case 23:
-        return val + 'rd';
-      default:
-        return val + 'th';
-    }
-  }
-
-  // Checks for the real difference in months to avoid errors
-  function monthDiff(date1, date2) {
-    var month2 = date2.getUTCFullYear() * 12 + date2.getUTCMonth();
-    var month1 = date1.getUTCFullYear() * 12 + date1.getUTCMonth();
-    return month2 - month1;
-  }
-  
-  //day diff
-  function dayDiff(date1, date2) {
-    if(date2.getUTCMonth() === date1.getUTCMonth()){
-      return date1.getUTCDate()-date2.getUTCDate();
-    }
-    return 0;
-  }
-
-  // Get's the right month string.
-  function getMonth(date) {
-    return months[date.getUTCMonth()];
-  }
-
-  function displayDate() {
-
-    // Handles same day
-    if (date2.getTime() - date1.getTime() === 0) {
-      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate()) + ', ' + date1.getUTCFullYear()];
-    }
-
-    // Handles same month
-    if (date1.getUTCMonth() === date2.getUTCMonth() && date1.getUTCFullYear() === date2.getUTCFullYear()) {
-      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate()), dateEnding(date2.getUTCDate())];
-    }
-    
-    // Handles more than a month of difference, but less than 12 months and different year
-    if (monthDiff(date1, date2) < 12 && date1.getUTCFullYear() !== date2.getUTCFullYear() ) {
-      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate()), getMonth(date2) + ' ' + dateEnding(date2.getUTCDate())];
-    }
-
-    // Handles same month but different year
-    if (monthDiff(date1, date2) <= 12 && dayDiff(date1, date2)>0) {
-      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate())+', '+date1.getUTCFullYear(), getMonth(date2) + ' ' + dateEnding(date2.getUTCDate())];
-    }
-    
-    // Handles more than a month of difference, but less than 12 months and same year
-    if (monthDiff(date1, date2) < 12) {
-      return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate())+', '+date1.getUTCFullYear(), getMonth(date2) + ' ' + dateEnding(date2.getUTCDate())];
-    }
-
-    // Handles cases with more than 12 months apaprt.
-    return [getMonth(date1) + ' ' + dateEnding(date1.getUTCDate()) + ', ' + date1.getUTCFullYear(), getMonth(date2) + ' ' + dateEnding(date2.getUTCDate()) + ', ' + date2.getUTCFullYear()];
-  }
-
-  var date1 = convertDate(str[0]);
-  var date2 = convertDate(str[1]);
-
-  return displayDate();
-
-}
-```
-
-# Code Explanation:
-- Read comments in code
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @guyjoseph for your help with Bonfire: Friendly Date Ranges`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Inventory-Update.md b/Bonfire-Inventory-Update.md
deleted file mode 100644
index 1dc80c2..0000000
--- a/Bonfire-Inventory-Update.md
+++ /dev/null
@@ -1,159 +0,0 @@
-# Problem Explanation:
-- Look through an array of new products, in the format: `[quantity, name]`
-- Return an array containing updated quantities for each item that already existed, and any new products
-
-## Hint: 1
-- You need to work through each item of the new inventory to see if it exists in the current inventory or not.
-- Remember that the product name is stored as the second element of each sub-array: `arr2[0][1] = "Bowling Ball"`
-
-## Hint: 2
-- If the item exists, you need to add the quantity from the new inventory
-- If the item doesn't exist, you need to add the entire item
-
-## Hint: 3
-- Return the completed inventory in alphabetical order
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-#### First solution
-```js
-function inventory(arr1, arr2) {
-
-    // Variable for location of product
-    var index;
-
-    // A helper method to return the index of a specified product (undefined if not found)
-    var getProductIndex = function (name) {
-        for (var i = 0; i < this.length; i++) {
-            if (this[i][1] === name) {
-                return i;
-            }
-        }
-        return undefined;
-    }
-
-    // For each item of the new Inventory
-    for (var i = 0; i < arr2.length; i++) {
-
-        // Invoke our helper function using arr1 as this
-        index = getProductIndex.call(arr1, arr2[i][1]);
-
-        // If the item doesn't exist
-        if (index === undefined) {
-            // Push the entire item
-            arr1.push(arr2[i]);
-        } else {
-            // Add the new quantity of the current item
-            arr1[index][0] += arr2[i][0];
-        }
-
-    }
-
-    // Sort alphabetically, by the product name of each item
-    arr1.sort(function (a, b) {
-        if (a[1] > b[1]) {
-            return 1;
-        }
-        if (a[1] < b[1]) {
-            return -1;
-        }
-        return 0;
-    });
-
-    return arr1;
-}
-```
-#### Second solution
-```js
-function inventory(arr1, arr2) {
-  // All inventory must be accounted for or you're fired!
-
-  var index;
-  var arrCurInvName = []; // Names of arr1's items
-  var arrNeInvName = []; // Names of arr2's items
-
-  // Same as using two for loops, this takes care of increasing the number of stock quantity.
-  arr1.map(function(item1) {
-    return arr2.map(function(item2) {
-      if (item1[1] === item2[1]) {
-        item1[0] = item1[0] + item2[0]; //Increase number of stock
-      }
-    });
-  });
-
-  // Get item's name for new Inventory
-  arr2.map(function(item) {
-    arrNeInvName.push(item[1]);
-  });
-
-  // Get item's name for Current Inventory
-  arr1.map(function(item) {
-    arrCurInvName.push(item[1]);
-  });
-
-  // Add new inventory items to current inventory.
-  arrNeInvName.map(function(item) {
-    if (arrCurInvName.indexOf(item) === -1) {
-      index = arrNeInvName.indexOf(item);
-      arr1.push(arr2[index]);
-    }
-  });
-
-  // Sort the array alphabetically using the second element of the array as base.
-  arr1.sort(function(currItem, nextItem) {
-
-    //Ternary function to avoid using if else
-    return currItem[1] > nextItem[1] ? 1 : -1;
-  });
-
-  return arr1;
-}
-```
-
-#### Third solution
-```js
-function inventory(arr1, arr2) {
-  var flag=0;
-  arr2.forEach(function(item){
-    flag=0;
-    arr1.forEach(function(list){
-        //If the product is already present, increase the quantity
-      if(item[1]===list[1]){ list[0]+=item[0]; flag=1;}
-    });
-    //If not already present, add the product
-    if(flag===0) arr1.push(item);
-  });
-  //Return the sorted inventory in alphabetical order wrt product name
-    return arr1.sort(function(a, b) { 
-    return a[1] > b[1] ? 1 : -1;
-});
-}
-```
-# Code Explanation:
-#### First solution
-- Start by creating a variable to store the index in.  Define variables outside of loops
-- Create a helper function to find the index of a product name
-- The helper function iterates through each element of the array that it is called on, until it can either find the name parameter, or if it cannot find it then returns undefined
-- Then, work through each item in the delivery, and set index to the result of invoking our helper function on the current inventory (IE: Search the new inventory for that product name, and return it's index)
-- If we can't find that product, then we can add the entire product (Name and quantity) to the current inventory
-- Otherwise, then we can add the quantity from the new inventory
-- Then we sort the array by the product name (`arr1[x][1]` holds the name)
-- Return the sorted array
-- For Solution two, the explanation is on the code. Feel free to use different components on each solution to create your own if you like.
-
-#### Second and Third solutions
-- Read comments in code.
-
-## Related links
-- [Function.prototype.call](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)
-- [Array.prototype.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @guyjoseph @Rafase282 @anuragaryan for your help with Bonfire: Inventory Update`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
-
diff --git a/Bonfire-Make-a-Person.md b/Bonfire-Make-a-Person.md
deleted file mode 100644
index ac1d56e..0000000
--- a/Bonfire-Make-a-Person.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# Explanation:
-When I started the program I figured I just had to create the six functions mentioned in the details. However, it was not that simple. Creating them as a function was not the right way, I had to create them in a different way to make them a key.
-
-There is also a tricky part as you need six keys no more or less, so at first I had the variable that store the original name as a key too which was wrong.
-
-As for the usage of array, that is optional, you could also create new variable to hold the separated string if you wish but an array is easier to deal with as strings are immutable.
-
-Read the instructions carefully, it is always a good hint in itself to run the code and check what the test results were so you know what to expect but do not fixate yourself on that. Once you understand what you need to do, this problem is very easy and straightforward.
-
-## Hint: 1
-Use the **this** notation to create the keys instead of regular functions: This means instead of `var varName = function() {/*...*/}` you should use `this.varName = function() {/*...*/}`
-
-## Hint: 2
-The program has a test that checks for how many keys you used, they have to be exactly six, the six mentioned in the details section. This means if you need to work with variables, make them local and not a key: `this.fullName = firstAndLast;`
-
-## Hint: 3
-Often the code would not work the way you expect it due to wrong variable names, make sure to check that you spell them the right way. This happens to all of us at some point.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-Please try hard before you check this solution.
-
-```js
-var Person = function(firstAndLast) {
-  var fullName = firstAndLast;
-
-  this.getFirstName = function() {
-    return fullName.split(" ")[0];
-  };
-
-  this.getLastName = function() {
-    return fullName.split(" ")[1];
-  };
-
-  this.getFullName = function() {
-    return fullName;
-  };
-
-  this.setFirstName = function(name) {
-    fullName = name + " " + fullName.split(" ")[1];
-  };
-
-  this.setLastName = function(name) {
-    fullName = fullName.split(" ")[0] + " " + name;
-  };
-  
-  this.setFullName = function(name) {
-    fullName = name;
-  };
-};
-
-var bob = new Person('Bob Ross');
-bob.getFullName();
-```
-
-# Code Explanation:
-- Create a variable that will make a copy of the full name that was passed as a parameter.
-- Then we can proceed to create the six methods needed and return what is asked for.
-- For the individual setters, we can use the split to turn the fullname into an array of first and last names and concatenate the unchanged portion of the name with what was passed as a parameter.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @ltegman for your help with Bonfire: Make a Person`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Map-the-Debris.md b/Bonfire-Map-the-Debris.md
deleted file mode 100644
index b623da1..0000000
--- a/Bonfire-Map-the-Debris.md
+++ /dev/null
@@ -1,103 +0,0 @@
-![](http://i.imgur.com/jSJ4E7L.jpg)
-
-# Problem Explanation:
-The first thing to do is to get familiar with what the program is for, for this I would suggest you check the Wikipedia link as that is very important and from where you can also get the formula for the conversion. The hardest part are finding the formula, implementing it and for some modifying objects by the key. However, something that is not very clear is the fact that your program has to be able to check for any number of objects in the array which is what is tested on the second part.
-
-## Hint: 1
-The formula needed is: T = 2_pi _ sqrt(earthRadius + avgAlt to the cube / GM)
-
-## Hint: 2
-Use Math.round() to round up to the next whole number as requested. Using Math.ceil() will let you pass the first test but fail the second one.
-
-## Hint: 3
-Find out how to remove and add key to an object
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-#### First solution
-
-```js
-function orbitalPeriod(arr) {
-  var GM = 398600.4418;
-  var earthRadius = 6367.4447;
-  var a = 2 * Math.PI;
-  var newArr = [];
-  var getOrbPeriod = function(obj) {
-    var c = Math.pow(earthRadius + obj.avgAlt, 3);
-    var b = Math.sqrt(c / GM);
-    var orbPeriod = Math.round(a * b);
-    delete obj.avgAlt;
-    obj.orbitalPeriod = orbPeriod;
-    return obj;
-  };
-
-  for (var elem in arr) {
-    newArr.push(getOrbPeriod(arr[elem]));
-  }
-
-  return newArr;
-}
-```
-
-#### Second solution
-
-```js
-function orbitalPeriod(arr) {
-  var GM = 398600.4418;
-  var earthRadius = 6367.4447;
-  
-  //Looping through each key in arr object
-  for(var prop in arr){
-    //formula  of orbital period https://en.wikipedia.org/wiki/Orbital_period here a = avgAlt+earthRadius
-    //Rounding off the orbital period value 
-  var orbitalPer = Math.round(2*Math.PI*Math.sqrt(Math.pow(arr[prop].avgAlt+earthRadius,3)/GM));
-  //deleting the avgAlt property 
-  delete arr[prop].avgAlt;
-  //adding orbitalPeriod property
-  arr[prop].orbitalPeriod = orbitalPer;
-  }
-  return arr;
-}
-orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]);
-```
-
-#### Third solution
-```js
-function orbitalPeriod(arr) {
-  var GM = 398600.4418;
-  var earthRadius = 6367.4447;
-  // Loop through each item in the array arr
-  arr.forEach(function(item){
-    // Calculate the Orbital period value
-    var tmp= Math.round(2*Math.PI*Math.sqrt(Math.pow(earthRadius+item.avgAlt,3)/GM));
-    //Delete the avgAlt property
-    delete item.avgAlt;
-    //Add orbitalPeriod property
-    item.orbitalPeriod=tmp;
-  });
-  return arr;
-}
-```
-# Code Explanation:
-#### First solution
-- The GM and `earthRadius` is given to us.
-- To make the code easier to edit and read, I separated each part of the equation.
-- Create a new array to store the `orbPeriods`.
-- a is 2 times pi. The part that is a constant is on the global scope while the rest is part of a function.
-- Create a function that will do the required work for any amount of objects.
-- c is the power of `earthRadius` + the value of `avgAlt` to the cube.
-- b is the square root of c divided by GM.
-- Create `orbPeriod` to store the product of a & b, with the ceiling function applied to round up to the next whole number.
-- Then we delete the key`avgAlt`, and add the new key and its value.
-
-#### Second and Third solutions
-- Read comments in code.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @coded9 @anuragaryan for your help with Bonfire: Map the Debris`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Meet-Bonfire.md b/Bonfire-Meet-Bonfire.md
deleted file mode 100644
index 8390146..0000000
--- a/Bonfire-Meet-Bonfire.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Explanation:
-This is very simple, they just want you to get familiar with how their Bonfires work.
-
-## Hint: 1
-Read details.
-
-## Hint: 2
-Did you read all the details?
-
-## Hint: 3
-You need to change the return statement to what they ask.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function meetBonfire(argument) {
-  // Good luck!
-  console.log("you can read this function's argument in the developer tools", argument);
-
-  return true;
-}
-
-meetBonfire("You can do this!");
-```
-
-# Code Explanation:
-All you had to do was change from false to true.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 for your help with Bonfire: Meet Bonfire`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Missing-letters.md b/Bonfire-Missing-letters.md
deleted file mode 100644
index 618cdae..0000000
--- a/Bonfire-Missing-letters.md
+++ /dev/null
@@ -1,151 +0,0 @@
-# Problem Explanation:
-- You will create a program that will find the missing letter from a string and add it. If there is not missing letter it will return undefined. There is currently no test case for it missing more than one letter, but if anything recursion can be implemented or a second or more calls to the same function as needed. Also the letters are always provided in order so there is no need to sort them.
-
-## Hint: 1
-- You will need to convert from character to ASCII code using the two methods provided in the description.
-
-## Hint: 2
-- You will have to check for the difference in ASCII code as they are in order. Using a chart would be very helpful.
-
-## Hint: 3
-- You will need to figure out where to insert the letter and how to do it, along with handling the case that there is not missing letter as it needs an specific return value.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-####First solution:
-
-```js
-function fearNotLetter(str) {
-  // Create our variables.
-  var firstCharacter = str.charCodeAt(0);
-  var valueToReturn = '';
-  var secondCharacter = '';
-
-  // Function to find the missing letters
-  var addCharacters = function(a, b) {
-    while (a - 1 > b) {
-      b++;
-      valueToReturn += String.fromCharCode(b);
-    }
-    return valueToReturn;
-  };
-
-  // Check if letters are missing in between.
-  for (var index = 1; index < str.length; index++) {
-    secondCharacter = str.charCodeAt(index);
-
-    // Check if the diference in code is greater than one.
-    if (secondCharacter - firstCharacter > 1) {
-      // Call function to missing letters
-      addCharacters(secondCharacter, firstCharacter);
-    }
-
-    // Switch positions
-    firstCharacter = str.charCodeAt(index);
-  }
-
-  // Check whether to return undefined or the missing letters.
-  if (valueToReturn === '')
-    return undefined;
-  else
-    return valueToReturn;
-}
-```
-
-####Second solution:
-
-```js
-function fearNotLetter(str) {
-  
-  for(var i = 0; i < str.length; i++) {
-    /* code of current character */
-    var code = str.charCodeAt(i);
-    
-    /* if code of current character is not equal to first charcter + no of iteration
-    hence character has been escaped*/
-    if ( code !== str.charCodeAt(0) + i) {
-    
-      /* if current character has escaped one character find previous char and return*/
-      return String.fromCharCode(code-1);
-    }  
-  }
-  return undefined;
-}
-```
-
-####Third solution (Declarative)
-```js
-// Adding this solution for the sake of avoiding using 'for' and 'while' loops.
-// See the explanation for reference as to why. It's worth the effort.
-
-function fearNotLetter(str) {
-  var compare = str.charCodeAt(0), missing;
-  
-  str.split('').map(function(letter,index){
-    if (str.charCodeAt(index) == compare) { ++compare; }
-    else { missing = String.fromCharCode(compare); }
-  });
-  
-  return missing;
-}
-```
-
-####Fourth solution:
-```js
-function fearNotLetter(str) {
-  var strArr = str.split('');
-  var missingChars = [], i = 0;
-  var nextChar = String.fromCharCode(strArr[i].charCodeAt(0)+1);
-  while (i<strArr.length - 1) {
-    if (nextChar !== strArr[i+1]){
-      missingChars.push(nextChar);
-      nextChar = String.fromCharCode(nextChar.charCodeAt(0)+1);
-    } else {
-      i++;
-      nextChar = String.fromCharCode(strArr[i].charCodeAt(0)+1);
-    }
-  }
-  return missingChars.join('') === '' ? undefined : missingChars.join('') ;
-}
-```
-
-####Fifth solution:
-```js
-function fearNotLetter(str) {
-  var allChars = '';
-  var notChars = new RegExp('[^'+str+']','g');
-  for (var i=0;allChars[allChars.length-1] !== str[str.length-1] ;i++)
-    allChars += String.fromCharCode(str[0].charCodeAt(0)+i);
-  return allChars.match(notChars) ? allChars.match(notChars).join('') : undefined;
-}
-```
-# Code Explanation:
-####First and second solutions:
-- Read comments in code.
-
-####Third solution (Declarative):
-- First we define variables to store the character code for the first letter in the string, and to store whatever missing letters we may find.
-- We turn the string to an array in order to map through it instead of using those nasty `for` and `whiles` (See [this article](http://www.sitepoint.com/quick-tip-stop-writing-loops-start-thinking-with-maps/) for refence as to why. And give it a serious try. Really... you'll thank me for it.
-(If you're not sure how to `map`, you can review [Waypoint: Iterate over arrays with map] ](http://www.freecodecamp.com/challenges/waypoint-iterate-over-arrays-with-map) and [MDN's reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)).
-- As we `map` through our letters' character codes, we go comparing with the one that should be in that position.
-- If the current letter matches, we move the comparison variable to its next position so we can compare on the next cycle.
-- if not, the missing letter will be assigned to the `missing` variable, which will be returned after the map is finished.
-
-####Fourth solution:
-- Increase loop index only when you have found all the missing letters between current and next letter
-- Every time you find a missing letter push it to `missingchars`
-
-####Fifth solution:
-- Create a new String that consists all the letters in the range
-- Create a Regular Expression for anything except `str`
-- Use `match()` to strip off the `str` letters from your newly created String
-
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @rohitnwn @sabahang @Hallaathrad for your help with Bonfire: Missing Letters`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Mutations.md b/Bonfire-Mutations.md
deleted file mode 100644
index 4c4d040..0000000
--- a/Bonfire-Mutations.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Problem Explanation:
-- Return true if the string in the first element of the array contains all of the letters of the string in the second element of the array..
-
-## Hint: 1
-- If everything is lowercase it will be easier to compare.
-
-## Hint: 2
-- Our strings might be easier to work with if they were arrays of characters.
-
-## Hint: 3
-- A loop might help. Use `indexOf()` to check if the letter of the second word is on the first.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-# Code Solutions:
-
-####First solution (Procedural):
-```js
-function mutation(arr) {
-  var test = arr[1].toLowerCase();
-  var target = arr[0].toLowerCase();
-  for (i=0;i<test.length;i++) {
-    if (target.indexOf(test[i]) < 0)
-      return false;
-  }
-  return true;
- }
-```
-
-####Second Solution (Declarative):
-```js
-function mutation(arr) {
- return arr[1].toLowerCase()
-              .split('')
-              .every(function (letter){
-                return arr[0].toLowerCase()
-                             .indexOf(letter) != -1;
-              });
-}
-```
-
-# Code Explanations:
-####First solution (Procedural):
-First we make the two strings in the array lowercase. `test` will hold what we are looking for in `target`.   
-Then we loop through our test characters and if any of them is not found we `return false`.
-
-If they are _all_ found, the loop will finish without returning anything and we get to `return true`.
-
-####Second solution (Declarative):
-
-Grab the second string, lowercase and turn it into an array; then make sure *every* one of its *letters* is a part of the lowercased first string.
-
-`Every` will basically give you letter by letter to compare, which we do by using `indexOf` on the first string.
-`indexOf` will give you -1 if the current `letter` is missing. 
-We check that not to be the case, for if this happens even once `every` will be false.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @sxmxc @Rafase282 @anuragaryan @hallaathrad for your help with Bonfire: Mutations`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-No-Repeats-Please.md b/Bonfire-No-Repeats-Please.md
deleted file mode 100644
index 90628c4..0000000
--- a/Bonfire-No-Repeats-Please.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# Problem Explanation:
-- This task requires us to look at each possible permutation of a string. This is best done using a recursion function. Being able to build a function which collects all permutations of a string is a common interview question, so there is no shortage of tutorials out there on how to do this, in many different code languages.
-- This task can still be daunting even after watching a tutorial. You will want to send each new use of the function  3 inputs: 1. a new string (or character array) that is being built, 2. a position in your new string that's going to be filled next, and 3. an idea of what characters (more specifically positions) from the original string have yet to be used. The pseudo code will look something like this:
-
-  ```
-  var str = ???;
-  perm(current position in original string, what's been used in original string, current string build thus far){
-  if(current string is finished) {
-    print current string;
-  }else{
-    for(var i = 0; i < str.length; i++) {
-      if(str[i] has not been used) {
-        put str[i] into the current position;
-        mark str[i] as used
-        perm(current position in original string, what's been used in original string, current string build thus far)
-        unmark str[i] as used because another branch in the tree for i + 1 will still likely use it;
-      }
-    }
-  }
-  }
-  perm(0, nothing used yet, empty new string (or array the same size as str);
-  ```
-
-- Another way to think about this problem is to start from an empty space. Introduce the first letter to the space. This space will now contain the first sub-permutation. Here's a diagram illustrating the idea:
-
-![diagram](http://i.imgur.com/zFm5gRx.png)
-
-```js
-// An approach to introduce a new character to a permutation
-var ch = '?';
-var source = ['?', '?', '?'];     // Current sub-permutation
-var temp, dest = [];
-
-for(var i = 0; i <= source.length; ++i) {
-    temp = source.slice(0);    // Copy the array
-    temp.splice(i, 0, ch);    // Insert the new character
-    dest.push(temp);    // Store the new sub-permutation    
-}
-```
-
-Finding each permutation could then be done non-recursively by including the above in a function taking a source array and returning a destination array. For each letter of the input string, pass that character, as well as the array  returned from the previous call of the function.
-
-A way to visualize this is by considering a tree that starts with the first character of your string: ![Permutation Tree](http://i.imgur.com/t8zNarc.png)
-
-## Hint: 1
-- The easiest way is to use Heap's algorithm to recursively get a list of all the permutations.
-
-## Hint: 2
-- Once you have the list then just create a regular expression to catch the repeating characters.
-
-## Hint: 3
-- You will want to have the permutations as an array of joined strings instead of separated characters.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function permAlone(str) {
-
-  // Create a regex to match repeated consecutive characters.
-  var regex = /(.)\1+/g;
-
-  // Split the string into an array of characters.
-  var arr = str.split('');
-  var permutations = [];
-  var tmp;
-
-  // FUnction to swap variables' content.
-  function swap(index1, index2) {
-    tmp = arr[index1];
-    arr[index1] = arr[index2];
-    arr[index2] = tmp;
-  }
-
-  //Generate arrays of permutations using the algorithm.
-  function generate(int) {
-    if (int === 1) {
-      // Make sure to join the characters as we create  the permutation arrays
-      permutations.push(arr.join(''));
-    } else {
-      for (var i = 0; i != int; ++i) {
-        generate(int - 1);
-        swap(int % 2 ? 0 : i, int - 1);
-      }
-    }
-  }
-
-  generate(arr.length);
-
-  // Filter the array of repeated permutations.
-  var filtered = permutations.filter(function(string) {
-    return !string.match(regex);
-  });
-
-  //Return how many have no repetitions.
-  return filtered.length;
-}
-```
-
-# Code Explanation:
-- Read comments in code
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Philosophist @Rafase282 for your help with Bonfire: No Repeats Please`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Pairwise.md b/Bonfire-Pairwise.md
deleted file mode 100644
index d0e1209..0000000
--- a/Bonfire-Pairwise.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Explanation:
-The program should look for the numbers in the array which would add to make the number from the **arg.** Then instead of adding those numbers up, you will add their **indices** which is the reason why you get 11 on the example from detail.
-
-Remember that arrays start at index 0 and go from there so from [1,4,2,3,0,5] if we switch to their indices it would be [0,1,2,3,4,5] then we add indices 1 + 2 + 3 + 5 and we get 11. That is what we need to return.
-
-## Hint: 1
-Remember to return the smaller sum if multiple are possible. This means `[1,1,1],1 should use 0 + 1 instead of 0+1 & 1 +1 , etc`
-
-## Hint: 2
-Try using an array of indices to track when an index has been used or not.
-
-## Hint: 3
-It is easy to confuse indices as being numbers, but since you will be interacting with them, make sure to work with them as integers to prevent the code from behaving erratically.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function pairwise(arr, arg) {
-  // Create empty array to keep the arrays we will add.
-  var index = [];
-
-  // Loop to check the first number.
-  for (var a in arr) {
-    // temporal first number.
-    var temp = arr[a];
-
-    // Second loop to check against the first number.
-    for (var i = 1; i < arr.length; i++) {
-      // temporal secodn number.
-      var temp2 = arr[i];
-
-      // Key element, this check to make sure that the numbers add to arg
-      // also that the second index is greater than the first, and that neither
-      // of those indices are already on the array.
-      if (temp + temp2 === arg && i > a && index.indexOf(+a) === -1 && index.indexOf(+i) === -1) {
-        // if true then add both indices as integers then stop checking to avoid repeats.
-        index.push(+a, +i);
-        break;
-      }
-    }
-  }
-
-  // After the two loops are done, check if index is empty to return 0
-  // or if it is not, then use Array.reduce(callbackFunc) to returnt he sum
-  // of the numbers.
-  if (index.length >= 1) {
-    var addAll = function(a, b) {
-      return a + b;
-    };
-
-    return index.reduce(addAll);
-  } else
-    return 0;
-}
-```
-
-# Code Explanation:
-- First I create an empty array to store the indices that i will be adding.
-- Then I create an outer loop to get the first number.
-- Then get the second number from another inner loop.
-- Then I check to make sure that the two numbers add to arg that was passed as a parameter to the function; we also have to make sure the index from the second loop is grater than the one from the first loop to avoid adding wrong indices. We also have to check to make sure the indices are not already part of the **index** array.
-- If all that is true, then we add the two indices as integer by using '+' or parseInt(), and then we stop the inner loop since everything else would be redundant and wrong.
-- After all the loops are over, check in **index** is empty, if it is then return 0, otherwise return the addition of all the integers in it using Array.reduce(callbackFunc) to return the sum of the numbers.
-- 
-##Another Solution
-
-```js
-function pairwise(arr, arg) {
- //Set sum of indices to zero
- var sum = 0;
- //looping from first element
-  for(i=0;i<arr.length;i++){
-  //Looping from second element by setting first element  constant
- for(j=i+1;j<arr.length;j++){
- //Check whether the sum is equal to arg
-   if(arr[i]+arr[j] ==arg){
-   //Add the indices
-     sum += i+j;
-     //Set the indices to NaN so that they can't be used in next iteration
-     arr[i] =arr[j] = NaN;
-    }
-   } 
-  }
- return sum;
-}
-pairwise([1, 1, 1], 2);
-```
-#Code explanation in comments
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @coded9 @SaintPeter for your help with Bonfire: Pairwise`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Pig-Latin.md b/Bonfire-Pig-Latin.md
deleted file mode 100644
index 5c54d0d..0000000
--- a/Bonfire-Pig-Latin.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# Problem Explanation:
-- You need to create a program that will translate from English to Pig Latin. Check the instructions for converting to Pig Latin from the initial description or the wiki page. It might not be obvious but you need to remove all the consonants up to the first vowel in the case there letter does not start with a vowel.
-
-## Hint: 1
-- You will probably want to use regular expressions. This will allow you to convert the words easily.
-
-## Hint: 2
-- If the first character is a vowel, then take that whole word and add 'way' at the end. Otherwise comes the tricky part, take the consonant(s) before the first vowel and move it to the end and add 'ay'. This is where I had trouble since it was not clear that it was not just the first consonant but all of them before the first vowel.
-
-## Hint: 3
-- You will need to use everything you know about string manipulation to get the last part right. However, it can be done with `substr` alone.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-#### First solution
-```js
-function translate(str) {
-  // Create variables to be used
-  var pigLatin = '';
-  var regex = /[aeiou]/gi;
-  
-  // Check if the first character is a vowel
-  if (str[0].match(regex)) {
-    pigLatin = str + 'way';
-  
-  } else {
-    
-    // Find how many consonants before the first vowel.
-    var vowelIndice = str.indexOf(str.match(regex)[0]);
-    
-    // Take the string from the first vowel to the last char
-    // then add the consonants that were previously omitted and add the ending.
-    pigLatin = str.substr(vowelIndice) + str.substr(0, vowelIndice) + 'ay';
-  }
-
-  return pigLatin;
-}
-```
-
-#### Second solution
-```js
-function translate(str) {
-  //finding all the consonants in the beginning of the str. 
-  //by using && below I'm achiving a concept called Intersection of Regular Expressions
-  //where your pattern finds the union of two or more RegEx rules. 
-  //In Java you can achive this with RegEx special character '&&' 
-  //but in Javascript you can use the following instead. 
-  //Credit goes to http://stackoverflow.com/q/6595477
-  var consChars = str.match(/^[a-z]/) && str.match(/[^aeiou]*/).join('');
-  
-  //if no consonants found (i.e. str starts with vowels)
-  //use replace to remove consonants and construct newStr else add 'way' in the end
-  if (consChars !== ''){
-    newStr = str.replace(consChars, '') + consChars + "ay";
-  } else {
-    newStr = str + "way";
-  }
-  return newStr;
-}
-```
-
-#### Third solution
-```js
-
-function translate(str) {
-    var strArr = [];
-    var tmpChar;
-    
-    // check if the char is consonant using RegEx
-    function isConsonant(char) {
-        return !/[aeiou]/.test(char);
-    }
-    
-    // return initial str + "way" if it starts with vowel 
-    // if not - convert str to array
-    if (!isConsonant(str.charAt(0)))
-        return str + "way";
-    else 
-        strArr = str.split("");
-        
-    // push all consonats to the end of the array
-    while (isConsonant(strArr[0])) {
-        tmpChar = strArr.shift();
-        strArr.push(tmpChar);
-    }
- // convert array to string and concatenate "ay" at the end  
- return strArr.join("")+"ay";
-}
-
-translate("consonant");
-```
-#### Fourth Solution (recursive and declarative)
-```js
-function translate(str) {
-  function check(obj) {
-  	return ['a','i','u','e','o'].indexOf(str.charAt(obj)) == -1 ?
-      										  check(obj+1) : obj;}
-      										  
-  return str.substr(check(0))
-            .concat((check(0) === 0 ? 
-                        'w' : str.substr(0, check(0))) 
-                        + 'ay');
-}
-```
-
-# Code Explanation:
-####First-Third solution:
-- Read comments on code.
-
-#### Fourth solution (recursive and declarative)
-Let's start with a recursive function that will go checking for the first letter of the string to be in an *array of vowels*. In case of consonants, call itself on the next characters until finding the first vowel. It'll return the index of whatever it finds to be the last initial consonant. (i.e. Schmidtsville's would be 3).
-
-Then we'll grab our string, remove the letters up until that index, concatenate either that same chunk of removed string or `w` accordingly, and then `ay` regardless.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @sabahang @aganita @Hallaathrad for your help with Bonfire: Pig Latin`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Repeat-a-String-Repeat-a-String.md b/Bonfire-Repeat-a-String-Repeat-a-String.md
deleted file mode 100644
index 5dd29ee..0000000
--- a/Bonfire-Repeat-a-String-Repeat-a-String.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Explanation:
-The program is very simple, we have to take a variable and return that variable being repeated certain amount of times. No need to add space or anything, just keep repeating it into one single string.
-
-## Hint: 1
-You can't edit strings, you will need to create a variable to store the new string.
-
-## Hint: 2
-Create a loop to repeat the code as many times as needed.
-
-## Hint: 3
-Make the variable created store the current value and append the word to it.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-####First Solution
-```js
-function repeat(str, num) {
-  var accumulatedStr = '';
-
-  while (num > 0) {
-    accumulatedStr += str;
-    num--;
-  }
-
-  return accumulatedStr;
-}
-```
-
-####Second Solution
-
-```js
-function repeat(str, num) {
-  var newstr = [];
-  for (var i = 0; i < num; i++) {
-    newstr.push(str);
-  }
-  return newstr.join('');
-}
-
-repeat("abc", 3);
-```
-
-####Third Solution 
-(using Recursion)
-```js
-function repeat(str, num) {
-  if(num < 0)
-    return "";
-  if(num === 1)
-    return str;
-  else
-    return str + repeat(str, num - 1);
-}
-```
-
-####Fourth Solution
-(Declarative approach)
-
-```js
-function repeat(str, num) {
-  return num >= 0 ? str.repeat(num) : "";
-}
-
-repeat("abc", 3);
-```
-
-# Code Explanation:
-
-####First and Second solutions
-- Create a variable to store the repeated word.
-- Use a while loop or for loop to repeat code as many times as needed according to `num`
-- Then we just have to add the string to the variable created on step one. and increase or decrease num depending on how you set the loop.
-- At the end of the loop, return the variable for the repeated word.
-
-####Third solution
-(using recursiveness)
-- We check if `num` is a negative and return an empty string if true.
-- Then we check if it's equal to 1 and in that case we return the string itself.
-- If not, we add the string to a call of our function with `num` being decreased by 1, which will add another `str` and another until eventually `num` is 1. And return that whole process.
-
-####Fourth solution
-(Declarative approach)
-- This solution is somewhat similar to the third solution, except it uses the ternary operator form of the `if` statement.
-- The conditional's first statement (in this case our checking whether `num` is a negative number) is followed by `?`.
-- The next statement is what to execute, or in our case return, when the condition evaluates to true.
-- The final statement is what to execute, or again in our case return, if the initial statement evaluates to false.
-- In between the two statements for true and false, you use a colon `:` to indicate the separation.
-
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @shadowfool @Hallaathrad @sgalizia for your help with Bonfire: Repeat a String Repeat a String`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Return-Largest-Numbers-in-Arrays.md b/Bonfire-Return-Largest-Numbers-in-Arrays.md
deleted file mode 100644
index a4e0cfb..0000000
--- a/Bonfire-Return-Largest-Numbers-in-Arrays.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Explanation:
-You will get an array that contains sub arrays of numbers and you need to return an array with the largest number from each of the sub arrays.
-
-## Hint: 1
-You will need to keep track of the array with the answer and the largest number of each sub-array.
-
-## Hint: 2
-You can work with multidimensional arrays by `Array[Index][SubIndex]`
-
-## Hint: 3
-Pay close attention to the timing of the storing of variables when working with loops
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solutions ahead!**
-
-#### First solution
-(Procedural approach)
-
-```js
-function largestOfFour(arr) {
-  var results = [];
-  for (var n = 0; n < arr.length; n++) {
-    var largestNumber = 0;
-    for (var sb = 0; sb < arr[n].length; sb++) {
-      if (arr[n][sb] > largestNumber) {
-        largestNumber = arr[n][sb];
-      }
-    }
-
-    results[n] = largestNumber;
-  }
-
-  return results;
-}
-```
-
-#### Second solution
-(Declarative approach)
-> NOTE: This is an advanced solution. NOT FOR BEGINNERS.
-
-```js
-function largestOfFour(arr) {
-  return arr.map(Function.apply.bind(Math.max, null));
-}
-```
-
-# Code Explanation:
-
-#### First Solution
-(Procedural approach)
-
-- Create a variable to store the *results* as an array.
-- Create an outer loop to iterate through the outer array.
-- Create a second variable to hold the largest number. This must be outside an inner loop so it won't be reassigned until we find a larger number.
-- Create said inner loop to work with the sub-arrays.
-- Check if the element of the sub array is larger than the currently stored largest number. If so, then update the number in the variable.
-- After the inner loop, save the largest number in the corresponding position inside of the `results` array.
-- And finally return said array.
-
-#### Second Solution
-(Declarative approach)
-
-> TL;DR: **We build a special callback function (using the `Function.bind` method), that works just like `Math.max` but also has `Function.apply`'s ability to take arrays as its arguments ** :smiley:
-
-- We start by mapping through the elements inside the main array. Meaning each one of the inner arrays.
-
-- Now the need a callback function to find the max of each inner array provided by the map.<br>So we want to create a function that does the work of `Math.max` and accepts input as an array (which by it doesn't by default).<br><br>In other words, it would be really nice and simple if this worked by itself:
-`Math.max([9, 43, 20, 6]); // Resulting in 43`<br>Alas, it doesn't.
-
-- To do the work of accepting arguments in the shape of an array, there is this `Function.apply` method, but it complicates things a bit by *invoking* the *context* function.<br>
-i.e. `Math.max.apply(null, [9, 43, 20, 6]);` would invoke something like a `Max.max` method. What we're looking for... almost. 
-
-> Here we're passing `null` as the *context* of the `Function.apply` method as `Math.max` doesn't need any context.
-
-- Since `arr.map` expects a callback function, not just an expression, we create a function out of the previous expression by using the `Function.bind` method. 
-- Since, `Function.apply` is a static *method* of the same `Function` *object*, we can call `Function.prototype.bind` on `Function.apply` i.e. `Function.apply.bind`.
-
-- Now we pass the *context* for the `Function.apply.bind` call (in this case we want `Math.max`so we can gain its functionality).
-- Since the embedded `Function.apply` method will also require a context as it's 1st argument, we need to pass it a bogus *context*.
-  - So, we pass `null` as the 2nd param to `Function.apply.bind` which gives a *context* to the `Math.max` method.
-  - Since, `Math.max` is independent of any *context*, hence, it ignores the bogus *context* given by `Function.apply` method call. 
-  - Thus, our `Function.apply.bind(Math.max, null)` makes a new function accepting the `arr.map` values i.e. the inner arrays.
-
-*Bien noté*? :neutral_face:
-
-
-**Reference:-**
-- http://devdocs.io/#q=js+Math+max
-- http://devdocs.io/#q=js+Array+map
-- http://devdocs.io/#q=js+Function+apply
-- http://devdocs.io/#q=js+Function+bind
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @abhisekp @Hallaathrad for your help with Bonfire: Return Largest Numbers in Arrays`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Reverse-a-String.md b/Bonfire-Reverse-a-String.md
deleted file mode 100644
index 8ebca6d..0000000
--- a/Bonfire-Reverse-a-String.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Problem Explanation:
-We need to take the string and reverse it, so if it originally reads 'hello', it will now read 'olleh'. We will need to split the string, and therefore we will be working with Arrays as well.
-
-## Hint: 1
-- Start by splitting the string by characters.
-
-## Hint: 2
-- Look up the built in function to reverse a string.
-
-## Hint: 3
-- Do not forget to join the characters back together after you reverse them.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function reverseString(str) {
-  return str.split('').reverse().join('');
-}
-```
-
-# Code Explanation:
-- Our goal is to take the input, `str`, and return it in reverse. Our first step is to split the string by characters using `split('')`. Notice that we don't leave anything in between the single quotes, this tells the function to split the string by each character.
-
-- Using the `split()` function will turn our string into an array of characters, keep that in mind as we move forward.
-
-- Next we *chain* the `reverse()` function, which takes our array of characters and reverses them.
-
-- Finally, we *chain* `join('')` to put our characters back together into a string. Notice once again that we left no spaces in the argument for join, this makes sure that the array of characters is joined back together by each character.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 for your help with Bonfire: Reverse a String`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Roman-Numeral-Converter.md b/Bonfire-Roman-Numeral-Converter.md
deleted file mode 100644
index 2828db7..0000000
--- a/Bonfire-Roman-Numeral-Converter.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# Problem Explanation:
-- You will create a program that converts an integer to a roman numeral.
-
-## Hint: 1
-- Creating an array with the Roman Numerals and one with the decimal equivalent for the new forms will be very helpful.
-
-## Hint: 2
-- If you add the numbers that go before the new letter is introduced, it will save you plenty of code, like values for 4, 9, and 40.
-
-## Hint: 3
-- You can't have more than three consecutive Roman numerals together.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-# Code Solution:
-
-```js
-var convert = function(num) {
-
-  // Create arrays with default conversion with matching indices.
-  var decimalValue = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ];
-  var romanNumeral = [ 'M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' ];
-
-  //empty string variable for the final roman number
-  
-  var romanized = '';
-
-  // Loop through the indices of the decimalValue array.
-  for (var index = 0; index < decimalValue.length; index++) {
-    // Continue to loop while the value at the current index will fit into numCopy
-    while (decimalValue[index] <= num) {
-      // Add the Roman numeral & decrease numCopy by the decimal equivalent.
-      romanized += romanNumeral[index];
-      num -= decimalValue[index];
-    }
-  }
-
-  return romanized;
-};
-```
-
-# Code Explanation:
-- Read comments on code.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @SaintPeter @benschac for your help with Bonfire: Roman Numeral Converter`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Search-and-Replace.md b/Bonfire-Search-and-Replace.md
deleted file mode 100644
index 86a43da..0000000
--- a/Bonfire-Search-and-Replace.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# Problem Explanation:
-- You will create a program that takes a sentence, then search for a word in it and replaces it for a new one while preserving the uppercase if there is one.
-
-## Hint: 1
-- Find the index where `before` is in the string.
-
-## Hint: 2
-- Check first letter case.
-
-## Hint: 3
-- Strings are immutable, you will need to save the edits on another variable, even if you must reuse the same one just to make it look like the changes where done using just that one variable.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution #1:
-
-```js
-function myReplace(str, before, after) {
-  // Find index where before is on string
-  var index = str.indexOf(before);
-  // Check to see if the first letter is uppercase or not
-  if (str[index] === str[index].toUpperCase()) {
-    // Change the after word to be capitalized before we use it.
-    after = after.charAt(0).toUpperCase() + after.slice(1);
-  }
-  // Now replace the original str with the edited one.
-  str = str.replace(before, after);
-
-  return str;
-}
-```
-## Code Solution #2:
-
-```js
-function myReplace(str, before, after) {
-//Create a regular expression object
-  var re = new RegExp(before,"gi");
-//Check whether the first letter is uppercase or not
-  if(/[A-Z]/.test(before[0])){
-  //Change the word to be capitalized
-    after = after.charAt(0).toUpperCase()+after.slice(1);
-     }
-     //Replace the original word with new one
-  var  newStr =  str.replace(re,after);
-
- return newStr;
-
-}
-```
-
-## Code Solution #3:
-
-```js
-function myReplace(str, before, after) {
-
-    // create a function that will change the casing of any number of letter in parameter "target" 
-    // matching parameter "source"
-    function applyCasing(source, target) {
-        // split the source and target strings to array of letters
-        var targetArr = target.split("");
-        var sourceArr = source.split("");
-        // iterate through all the items of sourceArr and targetArr arrays till loop hits the end of shortes array
-        for (var i = 0; i < Math.min(targetArr.length, sourceArr.length); i++){
-            // find out the casing of every letter from sourceArr using regular expression
-            // if sourceArr[i] is upper case then convert targetArr[i] to upper case 
-            if (/[A-Z]/.test(sourceArr[i])) {
-                targetArr[i] = targetArr[i].toUpperCase();
-            }
-            // if sourceArr[i] is not upper case then convert targetArr[i] to lower case
-            else targetArr[i] = targetArr[i].toLowerCase();
-        } 
-        // join modified targetArr to string and return
-        return (targetArr.join(""));
-    }
-    
-    
-    // replace "before" with "after" with "before"-casing 
-    return str.replace(before, applyCasing(before, after));
-}
-```
-
-# Code Explanation:
-- Read comments on program.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @coded9 @aganita for your help with Bonfire: Search and Replace`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Seek-and-Destroy.md b/Bonfire-Seek-and-Destroy.md
deleted file mode 100644
index 263ff4f..0000000
--- a/Bonfire-Seek-and-Destroy.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Explanation:
-This problem is a bit tricky because you have to familiarize yourself with Arguments, as you will have to work with two **or more** but on the script you only see two. Many people hardcode this program for three arguments. You will remove any number from the first argument that is the same as any other other arguments.
-
-## Hint: 1
-You need to work with `arguments` as if it was a regular array. The best way is to convert it into one.
-
-## Hint: 2
-You need to filter, this also means you need to create a callback function, one that checks if the element is on the `indexOf()`
-
-## Hint: 3
-To convert `arguments` into an array use this code `var args = Array.prototype.slice.call(arguments);`
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function destroyer(arr) {
-  var args = Array.prototype.slice.call(arguments);
-  args.splice(0, 1);
-  return arr.filter(function(element) {
-    return args.indexOf(element) === -1;
-  });
-}
-```
-
-# Code Explanation:
-- The first line will turn the `arguments` variable into a full array instead of the limited array it currently is.
-- Next I remove the first argument since I don't need, since I only want the other arguments passed besides the first which is the array we are going to compare against.
-- Then use the `filter()` to filter out the elements that are on the array and keep the ones that are not.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 for your help with Bonfire: Seek and Destroy`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Slasher-Flick.md b/Bonfire-Slasher-Flick.md
deleted file mode 100644
index 8615b07..0000000
--- a/Bonfire-Slasher-Flick.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Problem Explanation:
-Return the remaining elements of an array after chopping off n elements from the head.
-
-For example: `slasher([1, 2, 3], 2);` must return [3]
-
-## Analysis:
-We need only the remaining part of an array, so we can just remove what we don't.
-
-## Understanding slicing:
-`.slice()` allows to get only what you want from an array.
-
-## Understanding the splice:
-If you want the **tail** of a snake remove the head first. The `.splice()` method changes the content of an array by removing existing elements and/or adding new elements. This can be handy. Get an array, remove the first part and return the remaining.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```javascript
-function slasher(arr, howMany) {
-  // remove the head
-  arr.splice(0,howMany);
-  //return the remaining or the tail  \__/(**)-<
-  return arr;
-}
-slasher([1, 2, 3], 2);
-```
-
-## Code Solution 2:
-
-```javascript
-function slasher(arr, howMany) {
-
-  //Return string after the amount chopped off.
-  return arr.slice(howMany);
-
-}
-```
-# References
-- [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @clint74 @Rafase282 @M-Bowe for your help with Bonfire: Slasher Flick`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
-
-```
-           ,,,         ,,,
-          ;"   ^;     ;'   ",
-          ;    s$$$$$$$s     ;
-          ,  ss$$$$$$$$$$s  ,'
-          ;s$$$$$$$$$$$$$$$
-          $$$$$$$$$$$$$$$$$$
-         $$$$P""Y$$$Y""W$$$$$      -{ Happy Camping! }
-         $$$$  p"$$$"q  $$$$$
-         $$$$  .$$$$$.  $$$$
-          $$DcaU$$$$$$$$$$
-            "Y$$$"*"$$$Y"
-                "$b.$$"
-```
\ No newline at end of file
diff --git a/Bonfire-Smallest-Common-Multiple.md b/Bonfire-Smallest-Common-Multiple.md
deleted file mode 100644
index c9dd4bd..0000000
--- a/Bonfire-Smallest-Common-Multiple.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# Explanation:
-This particular problem can be confusing because most people look for the smallest common multiple of the two number but forget the keyword **range.** This means that if you get `[1,5]` then you have to check for the smallest common multiple for all these numbers [1,2,3,4,5] that is evenly divisible by all of them.
-
-## Hint: 1
-Create an array with all the numbers that are missing from the original array to make it easier to check when having to check for even division.
-
-## Hint: 2
-You can use modulo `%` to check if the reminder is 0, which means it is evenly divisible.
-
-## Hint: 3
-If you sort the array from greater to lowest then you can check for the first two numbers as it is more likely to the the smallest common multiple than the lower numbers.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function smallestCommons(arr) {
-  // Sort array from greater to lowest
-  // This line of code was from Adam Doyle (http://github.com/Adoyle2014)
-  arr.sort(function(a, b) {
-    return b - a;
-  });
-
-  // Create new array and add all values from greater to smaller from the original array.
-  var newArr = [];
-  for (var i = arr[0]; i >= arr[1]; i--) {
-    newArr.push(i);
-  }
-
-  // Variables needed declared outside the loops.
-  var quot = 0;
-  var loop = 1;
-  var n;
-
-  // run code while n is not the same as the array length.
-  do {
-    quot = newArr[0] * loop * newArr[1];
-    for (n = 2; n < newArr.length; n++) {
-      if (quot % newArr[n] !== 0) {
-        break;
-      }
-    }
-
-    loop++;
-  } while (n !== newArr.length);
-
-  return quot;
-}
-```
-
-# Code Explanation:
-- Because the possibility of the smallest common denominator being among the two biggest numbers, it makes sense to check those first, so sort the array.
-- Create a new array to sore all the numbers.
-- Use a descending for loop to add the numbers from the biggest to the smallest in the new array.
-- Declare the variables for the quotient, the number of loops and the variable that we will use in a for loop on another scope, this will allow us access outside the loop.
-- Use a do while loop to check what we need while **n** is not the same length as the new array.
-- In the **do** part, we are going to multiply the very first number, times the number of loops, times the second number.
-- The loop part will allows us to increase the number beyond the greatest number we have without having to change the algorithm.
-- We enter a for loop that will go from n being 2 and going up by one while it is smaller than the array with all the numbers.
-- If the quotient is not even then stop the loop. If it is even then it check for the next elements in the array until it is not even or we find our answer.
-- Outside the loop, increase the value of loop.
-- At the end of the loop return the quotient.
-
-If the array only has two elements then the for loop never gets used and the return value is the product of said numbers. Otherwise, from the third element and until n is the same and the array length check if the remainder of the quotient and the third value of the array is not 0, if it is not 0 then stop loop increases and then we start over. If the remainder was 0 then keep checking until the end of the array.
-
-# Alternate solution:
-
-Note: The solution above requires over 2,000 loops to calculate the test case smallestCommons([1,13]), and over 4 million loops to calculate smallestCommons([1,25]). The alternate code below evaluates smallestCommons([1,13]) in around 20 loops and smallestCommons([1,25]) in 40, by using a more efficient algorithm.
-
-```js
-function smallestCommons(arr) {
-  for(i = Math.max(...arr); i >= Math.min(...arr); i--) arr.push(i);
-  
-  return arr.slice(2).reduce(function(x,y){
-    var a = x, b = y, t = 0;    
-    while(a % b){a = a % b; t = a; a = b; b = t;}
-    return x / b * y;
-  });
-}
-
-```
-
-If you have trouble understanding the .reduce() method, you can compare it to this code, which essentially does the same thing:
-
-```
-function smallestCommons(arr) {
-  for(i = Math.max(...arr); i >= Math.min(...arr); i--) arr.push(i);
-  
-  var lcm = arr[2], a = 0, b = 0, t = 0;
-  
-  for (i = 3; i < arr.length; i++){
-    a = lcm, b = arr[i];  
-    while(a % b){a = a % b; t = a; a = b; b = t;}
-    lcm = lcm / b * arr[i];
-  }
-  
-  return lcm;
-}
-```
-
-This code is based on the [Euclidean algorithm](https://en.wikipedia.org/wiki/Euclidean_algorithm) for finding smallest common multiples.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @Adoyle2014 for your help with Bonfire: Smallest Common Multiple`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Sorted-Union.md b/Bonfire-Sorted-Union.md
deleted file mode 100644
index c9a79b3..0000000
--- a/Bonfire-Sorted-Union.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# Problem Explanation:
-- The program has to return a new array of unique values from two original arrays in the order they show up. So there is not sorting required, and no duplicates.
-
-## Hint: 1
-- Since you have no idea how many parameters were passed, it would be best to loop through the `arguments` before looping through the arrays.
-
-## Hint: 2
-- I used loops, you can use something else like map, reduce or others if you want.
-
-## Hint: 3
-- You will have to check if the current value is already on the array to be returned for every value.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-#### First Solution:
-
-```js
-function unite(arr1, arr2, arr3) {
-  // Creates an empty array to store our final result.
-  var finalArray = [];
-
-  // Loop through the arguments object to truly made the program work with two or more arrays
-  // instead of 3.
-  for (var i = 0; i < arguments.length; i++) {
-    var arrayArguments = arguments[i];
-
-    // Loops through the array at hand
-    for (var j = 0; j < arrayArguments.length; j++) {
-      var indexValue = arrayArguments[j];
-
-      // Checks if the value is already on the final array.
-      if (finalArray.indexOf(indexValue) < 0) {
-        finalArray.push(indexValue);
-      }
-    }
-  }
-
-  return finalArray;
-}
-```
-
-# Code Explanation:
-- Check comments in code.
-
-#### Second Solution:
-
-```js
-function unite() {
-  var concatArr = [];
-  var i = 0;
-  while (arguments[i]){
-    concatArr = concatArr.concat(arguments[i]); i++;
-  }
-  uniqueArray = concatArr.filter(function(item, pos) {
-    return concatArr.indexOf(item) == pos;
-  }); 
-  return uniqueArray;
-}
-```
-
-# Code Explanation:
-- Number of arguments can change dynamically so we don't need to bother providing our func with args at all
-- we use a while loop to concatanate all the arguments into one Array called `concatArr`
-- we use `filter` to remove the duplicate elements by checking the index of each element and removing same elements with different positions
-- ordering will be preserved as we didn't mess with it
-
-#### Third Solution:
-
-```js
-function unite(arr1, arr2, arr3) {
- var newArr;
- //Convert the arguments object into an array
-  var args = Array.prototype.slice.call(arguments);
-  //Use reduce function to flatten the array
-  newArr = args.reduce(function(arrA,arrB){
-  //Apply filter to remove the duplicate elements in the array
-    return arrA.concat(arrB.filter(function(i){
-      return arrA.indexOf(i) === -1;
-    }));
-  });
-
-   return newArr;                    
-}
-```
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @sabahang @coded9 for your help with Bonfire: Sorted Union`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Spinal-Tap-Case.md b/Bonfire-Spinal-Tap-Case.md
deleted file mode 100644
index c082549..0000000
--- a/Bonfire-Spinal-Tap-Case.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# Problem Explanation:
-- Convert the given string to an all lowercase sentence joined by dashes.
-
-## Hint: 1
-- Create a regex to for all white spaces and underscores.
-
-## Hint: 2
-- You will also have to make everything lowercase.
-
-## Hint: 3
-- The tricky part is getting the regex part to work, once you do that then just turn the uppercase to lowercase and replace spaces with underscores using `replace()`
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-#### First solution
-
-```js
-function spinalCase(str) {
-  // Create a variable for the white space and underscores.
-  var regex = /\s+|_+/g;
-
-  // Replace low-upper case to low-space-uppercase
-  str = str.replace(/([a-z])([A-Z])/g, '$1 $2');
-
-  // Replace space and underscore with -
-  return str.replace(regex, '-').toLowerCase();
-}
-```
-
-#### Second solution
-```js
-function spinalCase(str) {
-  // Replace low-upper case to low-space-uppercase
-  str = str.replace(/([a-z])([A-Z])/g, '$1 $2');
-  // Split on whitespace and underscores and join with dash
-  return str.toLowerCase().split(/(?:_| )+/) .join('-');
-}
-```
-
-# Code Explanation:
-#### First and Second solutions
-- Read comments in code.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @anuragaryan for your help with Bonfire: Spinal Tap Case`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Steamroller.md b/Bonfire-Steamroller.md
deleted file mode 100644
index 7ad0999..0000000
--- a/Bonfire-Steamroller.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# Explanation:
-This problem seems simple but you need to make sure to flatten any array, regardless of the level which is what adds a bit of difficulty to the problem.
-
-## Hint: 1
-You need to check if an element is an array or not.
-
-## Hint: 2
-If you are dealing with an array, then you need flatten it by getting the value inside of the array. This means if you have [[4]] then instead of returning [4] you need to return 4. If you get [[[4]]] then the same, you want the 4. You can access it with arr[index1][index2] to go a level deeper.
-
-## Hint: 3
-You will definitely need recursion or another way to go beyond two level arrays to make the code flexible and not hard-coded to the answers needed. Have fun!
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution 1:
-
-```js
-function steamroller(arr) {
-  var flattenedArray = [];
-
-  // Create function that adds an element if it is not an array.
-  // If it is an array, then loops through it and uses recursion on that array.
-  var flatten = function(arg) {
-    if (!Array.isArray(arg)) {
-      flattenedArray.push(arg);
-    } else {
-      for (var a in arg) {
-        flatten(arg[a]);
-      }
-    }
-  };
-
-  // Call the function for each element in the array
-  arr.forEach(flatten);
-  return flattenedArray;
-}
-```
-
-# Code Explanation:
-- Create a new variable to keep flattened arrays.
-- Create a function that will add non array elements to the new variable, and for the ones that are array it loops through them to get the element.
-- It does that by using recursion, if the element is an array then call the function again with a layer of array deeper to check if it is an array or not. if it is not then push that non-array element to the variable that gets returned. Otherwise, keep going deeper.
-- Invoke the function, the first time you will always pass it an array, so it always fall in to the isArray branch
-- Return the flattened array.
-
-## Code Solution 2:
-
-```js
-function steamroller(arr) {
-  return arr.reduce(function (flat, toFlatten) {
-    return flat.concat(Array.isArray(toFlatten) ? steamroller(toFlatten) : toFlatten);
-  }, []);
-}
-```
-# Code Explanation:
-- Use reduce to concatenate each element into the last element
-- If the new element is an Array itself call the function recursively to flatten it before merging it with the rest of result
-- Pass an empty array to reduce as initial value to make sure even the first element will be processed
-- Credit goes to http://stackoverflow.com/a/15030117/1075499
-
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @sabahang for your help with Bonfire: Steamroller`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Style-Guide.md b/Bonfire-Style-Guide.md
deleted file mode 100644
index effbcc7..0000000
--- a/Bonfire-Style-Guide.md
+++ /dev/null
@@ -1,40 +0,0 @@
-_work in progress_
-
-# Bonfire Style Guide
-Writing Bonfire challenges is a great way to exercise your own problem solving and testing abilities. It is a simple three step process.
-1. Fill out the [generator](http://www.freecodecamp.com/bonfire-challenge-generator) form and test your challenge.
-2. Once you have confirmed a working bonfire challenge in the generator, copy and paste the fields into the [JSON generator.](http://www.freecodecamp.com/bonfire-json-generator)
-3. Copy the JSON, fork the freecodecamp repository, and submit a pull request with your addition to the [bonfires.json.](https://github.com/FreeCodeCamp/freecodecamp/blob/master/seed_data/bonfires.json)
-
-## Name
-Name your challenge
-
-## Difficulty
-Attempt to rate difficulty compared against existing bonfire challenges.
-
-_TODO: add basic quantifiers for each difficulty level_
-
-## Description
-Separate paragraphs with a line break. Only the first paragraph is visible prior to a user clicking the "More information" button.
-
-All necessary information must be included in the first paragraph. Write this first paragraph as succinct as possible. Subsequent paragraphs should offer hints or details if needed.
-
-If your subject matter warrants deeper understanding, you may link to Wikipedia.
-
-## Challenge Seed
-This is important.
-
-## ~~Challenge Entry Point~~ (deprecated)
-_Leave this field blank. It will soon be removed from the generator._
-
-## Tests
-These tests are what bring your challenge to life. Without them, we cannot confirm the accuracy of a user's submitted answer. Choose your tests wisely.
-
-Bonfire tests are written using the [Chai.js](http://chaijs.com/) assertion library. Please use the `should` and `expect` syntax for end user readability. As an example of what not do to, many of the original Bonfire challenges are written with `assert` syntax and many of the test cases are difficult to read.
-
-If your bonfire question has a lot of edge cases, you will need to write many tests for full coverage. If you find yourself writing more tests than you desire, you may consider simplifying the requirements of your bonfire challenge. For difficulty level 1 through 3, you will generally only need 2 to 4 tests.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @brandenbyers @Rafase282 for your help with the Bonfire Style Guide`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
\ No newline at end of file
diff --git a/Bonfire-Sum-All-Numbers-in-a-Range.md b/Bonfire-Sum-All-Numbers-in-a-Range.md
deleted file mode 100644
index 81c74dc..0000000
--- a/Bonfire-Sum-All-Numbers-in-a-Range.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Problem Explanation:
-- You need to create a program that will take an array of two numbers who are not necessarily in order, and then add not just those numbers but any numbers in between. For example, [3,1] will be the same as `1+2+3` and not just `3+1`
-
-## Hint: 1
-- Use `Math.max()` to find the maximum value of two numbers.
-
-## Hint: 2
-- Use `Math.min()` to find the minimum value of two numbers.
-
-## Hint: 3
-- Remember to that you must add all the numbers in between so this would require a way to get those numbers.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution 1:
-
-```js
-function sumAll(arr) {
-    var max = Math.max(arr[0], arr[1]);
-    var min = Math.min(arr[0], arr[1]);
-    var temp = 0;
-    for (var i=min; i <= max; i++){
-        temp += i;
-    }
-  return(temp);
-}
-
-sumAll([1, 4]);
-```
-
-## Code Explanation:
-- First create a variable to store the max number between two.
-- The same as before for the Smallest number.
-- We create a temporary variable to add the numbers.
-
-Since the numbers might not be always in order, using `max()` and `min()` will help organize.
-
-## Code Solution 2:
-
-```js
-function sumAll(arr) {
-  // Buckle up everything to one!
-
-  // Using ES6 arrow function (one-liner)
-  var sortedArr = arr.sort((a,b) => a-b);
-  var firstNum = arr[0];
-  var lastNum = arr[1];
-  // Using Arithmetic Progression summing formula
-
-  var sum = (lastNum - firstNum + 1) * (firstNum + lastNum) / 2;
-  return sum;
-}
-```
-
-## Code Solution 3:
-
-```js
-function sumAll(arr) {
-    var sum = 0;
-    for (var i = Math.min(...arr); i <= Math.max(...arr); i++){
-        sum += i;
-    }
-  return sum;
-}
-
-sumAll([1, 4]);
-```
-
-## Code Explanation:
-- Creating a variable sum to store the sum of the elements.
-- Starting iteration of the loop from min element of given array and stopping when it reaches the max element. 
-- Using a spread operator (...arr) allows passing the actual array to the function instead of one-by-one elements.
-
-## References & Details:
-- [Arithmetic Progression summing formula](https://en.wikipedia.org/wiki/Arithmetic_progression#Sum)
-- [ES6 arrow function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
-- [Spread Operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)
-- [Using Spread Operator in Math.max()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max)
-
-The line `var sortedArr = arr.sort((a,b) => a-b);` is probably what will have you more confused. This would be the same as creating a function that returns `a-b` for the `sort()` which is the standard way to sort numbers from smallest to largest. Instead using arrow or fat arrow function, we are able to do all that in one single line thus allowing us to write less.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @abhisekp for your help with Bonfire: Sum All Numbers in a Range`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Sum-All-Odd-Fibonacci-Numbers.md b/Bonfire-Sum-All-Odd-Fibonacci-Numbers.md
deleted file mode 100644
index 9e25bbd..0000000
--- a/Bonfire-Sum-All-Odd-Fibonacci-Numbers.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# Explanation:
-You will need to gather all the **Fibonacci** numbers and then check for the odd ones. Once you get the odd ones then you will add them all. The last number should be the number given as a parameter if it actually happens to be an off Fibonacci number.
-
-## Hint: 1
-To get the next number of the series, you need to add the current one to the previous and that will give you the next one.
-
-## Hint: 2
-To check if a number is even all you have to check is if that number % 2 == 0.
-
-## Hint: 3
-As you get the next odd one, don't forget to add it to a global variable that can be returned at the end. `result += currNumber;` Will do the trick.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution #1:
-
-```js
-function sumFibs(num) {
-    var prevNumber = 0;
-    var currNumber = 1;
-    var result = 0;
-    while (currNumber <= num) {
-        if (currNumber % 2 !== 0) {
-            result += currNumber;
-        }
-
-        currNumber += prevNumber;
-        prevNumber = currNumber - prevNumber;
-    }
-
-    return result;
-}
-```
-
-# Code Explanation:
-- Create a variable to keep record of the current and previous numbers along with the result that will be returned.
-- Use a while loop to make sure we do not go over the number given as parameter.
-- We use the modulo operand to check if the current number is odd or even. If even add it to the result.
-- Complete the Fibonacci circle by rotating getting the next number and swapping values after.
-- Return the result.
-
-## Code Solution #2:
-
-```js
-function sumFibs(num) {
-  // create an array of fib numbers till num
-  var arrFib = [1];
-  for (var i = 1; i <=num;) {
-      arrFib.push(i);
-      i = arrFib[arrFib.length - 1] + arrFib[arrFib.length - 2];
-  }
-  
-  // return the sum of odd numbers from the array
-  var res = arrFib.reduce(function(prev, curr) { 
-      if (curr%2 !== 0) return prev + curr;
-      else return prev;
-    });
-  
-  return res;
-}
-```
-
-# Code Explanation:
-- See comments
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @d3ddd for your help with Bonfire: Sum All Odd Fibonacci Numbers`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Sum-All-Primes.md b/Bonfire-Sum-All-Primes.md
deleted file mode 100644
index 711935c..0000000
--- a/Bonfire-Sum-All-Primes.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# Explanation:
-The explanation for this problem is very simple. You will generate a list of prime numbers up to the number you are given as a parameter. Then you need to add them all up and return that value. The tricky part is on generating the list of prime numbers. I suggest you find a code or a good math algorithm that you can turn into code.
-
-## Hint: 1
-Generate a list of all the numbers up to and including the one you got as a parameter. This will be needed to determine which numbers are prime or not.
-
-## Hint: 2
-Check this [link](http://stackoverflow.com/questions/11966520/how-to-find-prime-numbers-between-0-100) if you prefer to find a solution for finding primes, or try learning and implementing your own [Sieve of Eratosthenes](https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes)
-
-## Hint: 3
-This problem is hard if you have to create your own code to check for primes, so don't feel bad if you had to use someone's code for that bit. Either way, you are most likely using array, so once you generate an array of primes, then just add them all up and return the number you get.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function sumPrimes(num) {
-  var res = 0;
-
-  // FUnction to get the primes up to max in an array
-  function getPrimes(max) {
-    var sieve = [];
-    var i;
-    var j;
-    var primes = [];
-    for (i = 2; i <= max; ++i) {
-      if (!sieve[i]) {
-        // i has not been marked -- it is prime
-        primes.push(i);
-        for (j = i << 1; j <= max; j += i) {
-          sieve[j] = true;
-        }
-      }
-    }
-
-    return primes;
-  }
-
-  // Add the primes
-  var primes = getPrimes(num);
-  for (var p = 0; p < primes.length; p++) {
-    res += primes[p];
-  }
-
-  return res;
-}
-```
-
-# Code Explanation:
-- Create a function that generates the numbers from 1 to **num** and check if they are prime along the way.
-- Declare the variables that will be needed.
-- Start with 2, if it has not been marked and added to the sieve array then it is a prime and we add it to the prime array.
-- Add the others to the sieve array.
-- Return the primes
-- Loop through the returned array and add all the elements to then return the final value.
-
-## Recursive Solution:
-```JS
-function sumPrimes(num) {
-  // function to check if the number presented is prime
-  function isPrime(number){
-      for (i = 2; i <= number; i++){
-          if(number % i === 0 && number!= i){
-          // return true if it is divisable by any number that is not itself. 
-             return false;
-          }
-       }
-       // if it passes the for loops conditions it is a prime
-      return true;
-  }
-  // 1 is not a prime, so return nothing, also stops the recusrive calls.
-  if (num === 1){
-    return 0;
-  }
-  // Check if your number is not prime
-  if(isPrime(num) === false){
-  // for non primes check the next number down from your maximum number, do not add anything to your answer
-    return sumPrimes(num - 1);
-  }
-  
-  // Check if your number is prime
-  if(isPrime(num) === true){
-  // for primes add that number to the next number in the sequence through a recursive call to our sumPrimes function.
-    return num + sumPrimes(num - 1);
-  }
-}
-```
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @shadowfool for your help with Bonfire: Sum All Primes`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Symmetric-Difference.md b/Bonfire-Symmetric-Difference.md
deleted file mode 100644
index 4672910..0000000
--- a/Bonfire-Symmetric-Difference.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# Problem Explanation:
-Symmetric Difference is the difference between **two** sets.
-
-So in the Symmetric Difference Bonfire you would work through the arrays of numbers something like this -
-
-`sym(A, B, C)` Translates to `sym(sym(A,B),C)`
-
-Or in plain English - First find the Symmetric Difference of Set A and Set B. Then find the Symmetric Difference of this new set and Set C.
-
-So -
-
-`sym([1, 2, 5], [2, 3, 5], [3, 4, 5])`
-
-would equal
-
-`[1,4,5]`
-
-Here's a nice video tutorial (with an awful fake British accent!) -
-
-[YouTube - Symmetric Difference](https://www.youtube.com/watch?v=PxffSUQRkG4)
-
-## Hint: 1
-The arguments object is not an Array. It is similar to an Array, but does not have any Array properties except length. For example, it does not have the pop method. However it can be converted to a real Array:
-
-`var args = Array.prototype.slice.call(arguments);`
-
-## Hint: 2
-Write a function that returns the symmetric difference of array1 and array2.
-
-`yourFunction([1, 2, 3], [2, 4, 6])` must return `[1, 3, 4, 6]`
-
-## Hint: 3
-Use `Array.prototype.reduce` along with yourFunction to repeat the process on multiple arguments
-
-Something a bit strange about the definition of symmetric difference is that if one identical item occurs in three different sets, it is a member of the symmetric difference.  An example is easier to explain:
-```
-a = [1, 2, 5]
-b = [2, 3, 5]
-c = [3, 4, 5]
-
-sym(a, b) = [1, 3]
-sym([1, 3], c) = [1, 4, 5]
-```
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function sym() {
-
-  // Convert the argument object into a proper array
-  var args = Array.prototype.slice.call(arguments);
-
-  // Return the symmetric difference of 2 arrays
-  var getDiff = function(arr1, arr2) {
-
-    // Returns items in arr1 that don't exist in arr2
-    function filterFunction(arr1, arr2) {
-      return arr1.filter(function(item) {
-        return arr2.indexOf(item) === -1;
-      });
-    }
-
-    // Run filter function on each array against the other
-    return filterFunction(arr1, arr2)
-      .concat(filterFunction(arr2, arr1));
-  };
-
-  // Reduce all arguments getting the difference of them
-  return args.reduce(getDiff, []);
-}
-```
-
-# Code Explanation:
-- Read comments in code.
-
-# Related Links
-- [Symmetric Difference](https://en.wikipedia.org/wiki/Symmetric_difference)
-- [Array.reduce()](http://devdocs.io/javascript/global_objects/array/reduce)
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @guyjoseph @jjmax75 for your help with Bonfire: Symmetric Difference`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Title-Case-a-Sentence.md b/Bonfire-Title-Case-a-Sentence.md
deleted file mode 100644
index a324c2b..0000000
--- a/Bonfire-Title-Case-a-Sentence.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Explanation:
-We have to return a sentence with camel case. This means that the first letter will always be in uppercase and the rest lowercase.
-
-## Hint: 1
-- You should start by splitting the string into an array of words.
-- Split the sentence.
-
-## Hint: 2
-- You should make the word lowercase before making the first letter uppercase.
-- Use replace method on each word to capitalize the first letter of each word.
-
-## Hint: 3
-- You will need to create a new string with pieces of the previous one and at the end merge everything into a single string again.
-- In replace method , give first argument as the position of the first letter using charAt. For second argument write a function to return the capitalized letter as the replacement.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-String.prototype.replaceAt = function(index, character) {
-    return this.substr(0, index) + character + this.substr(index+character.length);
-};
-
-
-function titleCase(str) {
-    var newTitle = str.split(' ');
-    var updatedTitle = [];
-    for (var st in newTitle) {
-        updatedTitle[st] = newTitle[st].toLowerCase().replaceAt(0, newTitle[st].charAt(0).toUpperCase());
-    }
-    return updatedTitle.join(' ');
-}
-```
-
-Second Solution:
-
-```js
-function titleCase(str) {
-  var newstr=str.toLowerCase().split(" ");
-  for(var i=0;i<newstr.length;i++){
-  var f=newstr[i].charAt(0);
- newstr[i]=newstr[i].replace(newstr[i].charAt(0),function replace(f){
-   return f.toUpperCase();
- });
-
-  }
-  console.log(newstr);
-  return newstr.join(" ");
-}
-
-titleCase("hello world");
-```
-
-Third Solution:
-
-```js
-function titleCase(str) {
-  str = str.toLowerCase().split(' ');
-  for (var i in str) {
-    str[i] = str[i].replace(str[i].charAt(0), str[i].charAt(0).toUpperCase());
-  };
-  return str.join(' ');
-}
-
-titleCase("I'm a little tea pot", "");
-```
-
-Minimal Solution:
-
-```js
-function titleCase(str) {
-  return str.replace(/\w\S*/g, function(word){
-    return word.charAt(0).toUpperCase()+word.substr(1).toLowerCase();}); 
-}
-
-titleCase("I'm a little tea pot", "");
-```
-
-Minimaler Solution:
-
-```js
-function titleCase(s) {return s.toLowerCase().replace(/^[a-z]|\s[a-z]/g, function(m){return m.toUpperCase()})}
-```
-
-# Code Explanation:
-We are modifying the `replaceAt` function using prototype to facilitate the use of the program.
-
-Split the string by whitespaces, and create a variable to track the updated title. Then we use a loop to turn turn the first character of the word to uppercase and the rest to lowercase. by creating concatenated string composed of the whole word in lowercase with the first character replaced by it's uppercase.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @PoojaKumar @Hallaathrad for your help with Bonfire: Title Case a Sentence`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
\ No newline at end of file
diff --git a/Bonfire-Truncate-a-String.md b/Bonfire-Truncate-a-String.md
deleted file mode 100644
index 3e7de63..0000000
--- a/Bonfire-Truncate-a-String.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# Explanation:
-We need to reduce the length of the string or **truncate** it if it is longer than the given maximum lengths specified and add `...` to the end. If it is not that long then we keep it as is.
-
-## Hint: 1
-Strings are immutable in JavaScript so we will need a new variable to store the truncated string.
-
-## Hint: 2
-You will need to use slice and specify where to start and where to stop.
-
-## Hint: 3
-Do not forget that when we truncate the word, we also must count the length added by `...`
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function truncate(str, num) {
-  if (str.length <= num)
-    return str;
-  
-  if (num <= 3)
-    return str.substr(0,num) + "...";
-  
-  return str.substr(0,num-3) + "...";
-}
-```
-
-# Code Explanation:
-First we need an if-statement to test if the length of the full string passed in as the first argument already fits within the size limit passed in as the second argument. If so we can just return the string that was passed in.
-
-```js
-if (str.length <= num)
-  return str;
-```
-
-Then we need to check if the num fits into our special case, where the desired length is less than or equal to three. In this case we will return the string trimmed to our target length, followed by `"..."`. We don't need to worry about the `"..."` being counted against the length of our output string in this case.
-
-```js
-if (num <= 3)
-  return str.substr(0,num) + "...";
-```
-
-Finally, we write the return for what happens when neither of the previous if-statements have been true. This call to `substr()` gives us a string that is 3 less than the target length specified by `num`, which is done so that we have room to add on the `"..."` and fit within that target.
-
-```js
-return str.substr(0,num-3) + "...";
-```
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 @richyvk @ltegman for your help with Bonfire: Truncate a String`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Validate-US-Telephone-Numbers.md b/Bonfire-Validate-US-Telephone-Numbers.md
deleted file mode 100644
index d158afb..0000000
--- a/Bonfire-Validate-US-Telephone-Numbers.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# Problem Explanation:
-- The task is not that hard to understand, implementing it is the hardest part. You have a to validate an US phone number. This means there is a certain amount of numbers required, while you don't need to put the country code, you will still need the area code and use one of the few formats allowed.
-
-## Hint: 1
-- There is no way around it, you will need to brush up your regular expressions skills.
-
-## Hint: 2
-- Try using a site like [http://regexpal.com/](http://regexpal.com/) to test the regex live while you create it.
-
-## Hint: 3
-- Start by trying to get it to validate each format from the example, each one should take a new line, once you get to select them all, then add examples that should not be selected and make sure they are not selected.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-
-## Code Solution 1:
-
-```js
-function telephoneCheck(str) {
-    
-   var regex = /^(1\s?)?(\(\d{3}\)|\d{3})[\s\-]?\d{3}[\s\-]?\d{4}$/;
-  
-   return regex.test(str);
-}
-```
-
-# Code Explanation:
-- `^` denotes the beginning of the string `(1\s?)?` checks allows for a "1" or a "1 " at the beginning.
-- `\d{n}` checks for exactly n number of digits so  `(\(\d{3}\)|\d{3})` checks for three digits that are allowed to be between parenthesis.
-- `[\s\-]?` checks for spaces or dashes between the groups of digits.
-- `$` denotes the end of the string. In this case the beginning and end of the string are used in the regex to prevent it from matching any longer string that might contain a valid phone number (eg. "s 555 555 5555 a").
-- Lastly we use `regex.test(str)` to test if the string adheres to the regular expression and return `true` or `false`.
-
-## Code Solution 2:
-
-```js
-function telephoneCheck(str) {
-  // Comprehensive regex from @dting 
-  var re = /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})$/;
-
-  return re.test(str);
-}
-```
-# Code Explanation
-- This is an example of a very comprehensive and robust solution to validating US phone numbers client side. In such cases it might be much better and easier to implement this library [libphonenumber.](https://github.com/googlei18n/libphonenumber)
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @Rafase282 @guyjoseph @dting @jhalls @crisvdkooij for your help with Bonfire: Validate US Telephone Numbers`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Where-art-thou.md b/Bonfire-Where-art-thou.md
deleted file mode 100644
index e52849f..0000000
--- a/Bonfire-Where-art-thou.md
+++ /dev/null
@@ -1,121 +0,0 @@
-![](http://i.imgur.com/IUY2p6Y.jpg)
-
-# Problem Explanation
-Write an algorithm that will take an `array` for the first argument and return an `array` with all the  `object`s that matches all the properties and values in the `Object` passed as second parameter.
-
-## Hint: 1
-You may use `for` loop or the `Array.prototype.filter` method.
-- [http://devdocs.io/#q=js+for](http://devdocs.io/#q=js+for)
-- [http://devdocs.io/#q=js+Array+filter](http://devdocs.io/#q=js+Array+filter)
-
-## Hint: 2
-Try to use `Object.prototype.hasOwnProperty` method to know if the property name exists in an object (as its own property).
-- [http://devdocs.io/#q=js+Object+hasOwnProperty](http://devdocs.io/#q=js+Object+hasOwnProperty)
-
-## Hint: 3
-Check equivalence of `Object` in `collection` with `Object` passed as second parameter to `where` function.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-### First
-
-```js
-function where(collection, source) {
-  // "What's in a name? that which we call a rose
-  // By any other name would smell as sweet.”
-  // -- by William Shakespeare, Romeo and Juliet
-  var srcKeys = Object.keys(source);
-
-  // filter the collection
-  return collection.filter(function (obj) {
-    for(var i = 0; i < srcKeys.length; i++) {
-      // check if obj in collection doesn't have the key
-      // or if it does have the key,
-      // then check if the property value doesn't match the value in source
-      if(!obj.hasOwnProperty(srcKeys[i]) || obj[srcKeys[i]] !== source[srcKeys[i]]) {
-        return false;
-      }
-    }
-    return true;
-  });
-}
-```
-
-### Second
-
-```js
-function where(collection, source) {
-  // "What's in a name? that which we call a rose
-  // By any other name would smell as sweet.”
-  // -- by William Shakespeare, Romeo and Juliet
-  var srcKeys = Object.keys(source);
-
-  // filter the collection
-  return collection.filter(function (obj) {
-    // return a Boolean value for `filter` method
-    return srcKeys.every(function (key) {
-      // reduce to Boolean value to be returned for `every` method
-      return obj.hasOwnProperty(key) && obj[key] === source[key];
-    });
-  });
-}
-```
-
-### Third
-
-```js
-function where(collection, source) {
-  // "What's in a name? that which we call a rose
-  // By any other name would smell as sweet.”
-  // -- by William Shakespeare, Romeo and Juliet
-  var srcKeys = Object.keys(source);
-
-  // filter the collection
-  return collection.filter(function (obj) {
-    // return a Boolean value for filter callback using reduce method
-    return srcKeys.reduce(function (res, key) {
-      // reduce to Boolean value to be returned by reduce method
-      return obj.hasOwnProperty(key) && obj[key] === source[key];
-    }, false);
-  });
-}
-```
-### Fourth
-
-```js
-function where(collection, source) {
-//Array for storing the matched objects
-  var arr = [];
-  //For maintaining the number of key-value matches
-  var count ;
-  collection.forEach(function(collObj) { 
-  //Initialize to zero for each object in collection
-     count = 0 ; 
-     for(var prop in source){
-     //Check whether the key exists and the key-value is matched
-        if( collObj.hasOwnProperty(prop) && collObj[prop] === source[prop])
-        //Increase the count if matched
-        count++; 
-       }
-     //Check whether all key-value pairs in source are matched
-     if(count>=Object.keys(source).length){ 
-        arr.push(collObj);
-      }
-    
-    });
-    return arr;
-}
-```
-## Code Explanation:
-> Please read the comments in the source code.
-
-Check this http://repl.it/BFZQ/19 for pretty debugging and code explanation
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @abhisekp @dting @coded9 for your help with Bonfire: Where art Thou`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Where-do-I-belong.md b/Bonfire-Where-do-I-belong.md
deleted file mode 100644
index 932ac7d..0000000
--- a/Bonfire-Where-do-I-belong.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Explanation:
-This can be a tricky problem to understand. You need to find where in the array a number should be inserted by order, and return the index where it should go.
-
-## Hint: 1
-The first thing to do is sort the array from lower to bigger, just to make the code easier. This is where sort comes in, it needs a callback function so you have to create it.
-
-## Hint: 2
-Once the array is sorted, then just check for the first number that is bigger and return the index.
-
-## Hint: 3
-If there is no index for that number then you will have to deal with that case too.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-function where(arr, num) {
-  arr.sort(function(a, b) {
-    return a - b;
-  });
-
-  for (var a = 0; a < arr.length; a++) {
-    if (arr[a] >= num)
-      return parseInt(a);
-  }
-
-  return arr.length;
-}
-```
-
-# Code Explanation:
-- First I sort the array using `.sort(callbackFuntion)` to sort it by lowest to highest, from left to right.
-- Then I use a for loop to compare the items in the array starting from the smallest one. When an item on the array is greater than the number we are comparing against, then we return the index as an integer.
-
-## Code Solution 2:
-
-```js
-function where(arr, num) {
-  arr.push(num);
-  arr.sort(function(a, b)
-           {return a-b;}
-          );
-  return arr.indexOf(num);
- }
-```
-
-# Code Explanation:
-- First insert the number into the array using the `Array.push()` method.
-- Then use the numerical sort method to sort the elements of the array. in the end just return the index value of the number that was push earlier using the `Array.indexOf()` method.
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat: **`Thanks @Rafase282 and @rahul1992 for your help with Bonfire: Where do I belong`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
diff --git a/Bonfire-Wiki-Template.md b/Bonfire-Wiki-Template.md
deleted file mode 100644
index a4dd0cf..0000000
--- a/Bonfire-Wiki-Template.md
+++ /dev/null
@@ -1,49 +0,0 @@
-**Foundational Agile Principles:**
-
-**_Individuals and interactions_** over processes and tools
-
-**_Working software _**over comprehensive
-
-_**Customer collaboration**_ over contract negotiation
-
-_**Responding to change **_ over following a plan
-
-
-
-
-## User-Stories
-User stories help us tie the needs of our users directly to features we implement in a
-conversational format. They **always** follow this syntax: _“As a User/Stakeholder , I need/want to be able to Do Something”_. This can result in some awkward stories for the “obvious” features like _“As a user, I need to be able to trust that my credit card information is secure.”_, but it is imperative that ALL features tie back to a story in order to allow us to effectively break the work down into manageable pieces.
-
-## Sprints
-A “Sprint” is a short (1-3 weeks) development cycle during which a number of stories or subtasks are targeted for completion by the end of the sprint. The idea behind “Sprinting” is to allow us to **deliver** a story to the project champion for feedback/approval. This iterative workflow ensures we get continuous buy-in from the project champion and we are delivering functionality that both works, and is valuable.
-
-## SCRUM
-At a basic level, SCRUM helps us stay focused and informed about what the status is on each assigned task as well as break down communication barriers. In many professional settings the work day begins with a “Daily Scrum”.  We will be following a weekly scrum to align with our sprints.  A common scrum failure is to attempt to problem solve during a scrum. Troubleshooting and brainstorming should always be done as a separate task from SCRUM.
-
-## Spoiler Alert!
-[![687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/thumb/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)](https://files.gitter.im/FreeCodeCamp/Wiki/nlOm/687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif)
-
-**Solution ahead!**
-
-## Code Solution:
-
-```js
-code here
-```
-
-# Code Explanation:
-- Explain your code here
-
-# Credits:
-If you found this page useful, you can give thanks by copying and pasting this on the main chat:  **`thanks @username1 @username2 @yourusername for your help with Bonfire: Name of the Bonfire`**
-
-> **NOTE:** Please add your username only if you have added any **relevant main contents** to the wiki page. (Please don't remove any existing usernames.)
-
-## Here you can add any other information that is helpful or related.
-- Right here.
-
-### Important notes about this template.
-- This template can also be used for regular pages.
-- The author part has been removed. This is a collaboration page, while people can see who contributed by checking the revision, using the code for the credits will also benefit the contributors and your name will be there, so there is no longer any need to add your picture or links.
-- If you have suggestions or comments about this template, feel free to contact [@Rafase282 in Gitter](https://gitter.im/Rafase282)
\ No newline at end of file
diff --git a/Challenge-Access-Array-Data-with-Indexes.md b/Challenge-Access-Array-Data-with-Indexes.md
new file mode 100644
index 0000000..62a09d8
--- /dev/null
+++ b/Challenge-Access-Array-Data-with-Indexes.md
@@ -0,0 +1,12 @@
+# Access Array Data with Indexes
+We can access the data inside arrays using indexes.
+
+Array indexes are written in the same bracket notation that strings use, except that instead of specifying a character, they are specifying an entry in the array.
+
+For example:
+
+```
+var array = [1,2,3];
+array[0]; //equals 1
+var data = array[1];
+```
diff --git a/Challenge-Access-Multi-Dimensional-Arrays-With-Indexes.md b/Challenge-Access-Multi-Dimensional-Arrays-With-Indexes.md
new file mode 100644
index 0000000..f3668b8
--- /dev/null
+++ b/Challenge-Access-Multi-Dimensional-Arrays-With-Indexes.md
@@ -0,0 +1,16 @@
+# Access Multi-Dimensional Arrays With Indexes
+One way to think of a `multi-dimensional` array, is as an array of arrays. When you use brackets to access your array, the first set of bracket refers to the entries in the outer-most array, and each subsequent level of brackets refers to the next level of entries inside.
+
+## Example
+
+```js
+var arr = [
+    [1,2,3],
+    [4,5,6],
+    [7,8,9],
+    [[10,11,12], 13, 14]
+];
+arr[0]; // equals [1,2,3]
+arr[1][2]; // equals 6
+arr[3][0][1]; // equals 11
+```
diff --git a/Challenge-Accessing-Nested-Arrays-In-Json.md b/Challenge-Accessing-Nested-Arrays-In-Json.md
new file mode 100644
index 0000000..ddd908b
--- /dev/null
+++ b/Challenge-Accessing-Nested-Arrays-In-Json.md
@@ -0,0 +1,22 @@
+#Waypoint: Accessing Nested Arrays in JSON
+
+As we have seen in earlier examples, JSON objects can contain both nested objects and nested arrays. Similar to accessing nested objects, Array bracket notation can be chained to access nested arrays.
+
+Here is an example of how to access a nested array:
+
+```js
+var ourPets = { 
+  "cats": [
+    "Meowzer",
+    "Fluffy",
+    "Kit-Cat"
+  ],
+  "dogs": [
+    "Spot",
+    "Bowser",
+    "Frankie"
+  ]
+};
+ourPets.cats[1]; // "Fluffy"
+ourPets.dogs[0]; // "Spot"
+```
\ No newline at end of file
diff --git a/Challenge-Accessing-Nested-Objects-In-Json.md b/Challenge-Accessing-Nested-Objects-In-Json.md
new file mode 100644
index 0000000..19c5f33
--- /dev/null
+++ b/Challenge-Accessing-Nested-Objects-In-Json.md
@@ -0,0 +1,22 @@
+#Waypoint: Accessing Nested Objects in JSON
+
+The properties and sub-properties of JSON objects can be accessed by chaining together the dot or bracket notation.
+
+Here is a nested JSON Object:
+
+```js
+var ourStorage = {
+  "desk": {
+    "drawer": "stapler"
+  },
+  "cabinet": {
+    "top drawer": { 
+      "folder1": "a file",
+      "folder2": "secrets"
+    },
+    "bottom drawer": "soda"
+  }
+}
+ourStorage.cabinet["top drawer"].folder2;  // "secrets"
+ourStorage.desk.drawer; // "stap
+```
\ No newline at end of file
diff --git a/Challenge-Accessing-Objects-Properties-With-Bracket-Notation.md b/Challenge-Accessing-Objects-Properties-With-Bracket-Notation.md
new file mode 100644
index 0000000..dd21a3c
--- /dev/null
+++ b/Challenge-Accessing-Objects-Properties-With-Bracket-Notation.md
@@ -0,0 +1,16 @@
+#Waypoint: Accessing Objects Properties with Bracket Notation
+
+The second way to access the properties of an object is bracket notation (`[]`). If the property of the object you are trying to access has a space in it, you will need to use bracket notation.
+
+Here is a sample of using bracket notation to read an object property:
+
+```js
+var myObj = {
+  "Space Name": "Kirk",
+  "More Space": "Spock"
+};
+myObj["Space Name"]; // Kirk
+myObj['More Space']; // Spock
+```
+
+Note that property names with spaces in them must be in quotes (single or double).
\ No newline at end of file
diff --git a/Challenge-Accessing-Objects-Properties-With-The-Dot-Operator.md b/Challenge-Accessing-Objects-Properties-With-The-Dot-Operator.md
new file mode 100644
index 0000000..655da75
--- /dev/null
+++ b/Challenge-Accessing-Objects-Properties-With-The-Dot-Operator.md
@@ -0,0 +1,16 @@
+#Waypoint: Accessing Objects Properties with the Dot Operator
+
+There are two ways to access the properties of an object: the dot operator (`.`) and bracket notation (`[]`), similar to an array.
+
+The dot operator is what you use when you know the name of the property you're trying to access ahead of time.
+
+Here is a sample of using the dot operator (`.`) to read an object property:
+
+```js
+var myObj = {
+  prop1: "val1",
+  prop2: "val2"
+};
+myObj.prop1; // val1
+myObj.prop2; // val2
+```
\ No newline at end of file
diff --git a/Challenge-Accessing-Objects-Properties-With-Variables.md b/Challenge-Accessing-Objects-Properties-With-Variables.md
new file mode 100644
index 0000000..ce470e1
--- /dev/null
+++ b/Challenge-Accessing-Objects-Properties-With-Variables.md
@@ -0,0 +1,15 @@
+#Waypoint: Accessing Objects Properties with Variables
+
+Another use of bracket notation on objects is to use a variable to access a property. This can be very useful for iterating through lists of the object properties or for doing the lookup.
+
+Here is an example of using a variable to access a property:
+
+```js
+var someProp = "propName";
+var myObj = {
+  propName: "Some Value"
+}
+```
+
+myObj[someProp]; // "Some Value"
+Note that we do not use quotes around the variable name when using it to access the property because we are using the value of the variable, not the name
\ No newline at end of file
diff --git a/Challenge-Add-Alt-Text-to-an-Image-for-Accessibility.md b/Challenge-Add-Alt-Text-to-an-Image-for-Accessibility.md
new file mode 100644
index 0000000..903b193
--- /dev/null
+++ b/Challenge-Add-Alt-Text-to-an-Image-for-Accessibility.md
@@ -0,0 +1,5 @@
+`alt` attributes, also known as alt text, are what browsers will display if they fail to load the image. alt attributes are also important for blind or visually impaired users to understand what an image portrays. And search engines also look at alt attributes.
+
+In short, every image should have an alt attribute!
+
+You can add an alt attribute right in the img element like this: `<img src="www.your-image-source.com/your-image.jpg" alt="your alt text"/>`.
\ No newline at end of file
diff --git a/Challenge-Add-Borders-Around-your-Elements.md b/Challenge-Add-Borders-Around-your-Elements.md
new file mode 100644
index 0000000..6f1de9f
--- /dev/null
+++ b/Challenge-Add-Borders-Around-your-Elements.md
@@ -0,0 +1,3 @@
+CSS borders have attributes like `style`, `color` and `width`.
+
+For example, if we wanted to create a red, 5 pixel border around an HTML element, we could use this class: `<style> .thin-red-border { border-color: red; border-width: 5px; border-style: solid; } </style>`.
\ No newline at end of file
diff --git a/Challenge-Add-Different-Margins-to-Each-Side-of-an-Element.md b/Challenge-Add-Different-Margins-to-Each-Side-of-an-Element.md
new file mode 100644
index 0000000..bbb3d9a
--- /dev/null
+++ b/Challenge-Add-Different-Margins-to-Each-Side-of-an-Element.md
@@ -0,0 +1 @@
+CSS allows you to control the margin of an element on all four sides with `margin-top`, `margin-right`, `margin-bottom`, and `margin-left` attributes.
\ No newline at end of file
diff --git a/Challenge-Add-Different-Padding-to-Each-Side-of-an-Element.md b/Challenge-Add-Different-Padding-to-Each-Side-of-an-Element.md
new file mode 100644
index 0000000..3765810
--- /dev/null
+++ b/Challenge-Add-Different-Padding-to-Each-Side-of-an-Element.md
@@ -0,0 +1,11 @@
+CSS allows you to control the padding of an element on all four sides with `padding-top`, `padding-right`, `padding-bottom`, and `padding-left` attributes.
+
+```
+.green-box {
+  background-color: green;
+  padding-top: 40px;
+  padding-right: 20px;
+  padding-bottom: 20px;
+  padding-left: 40px;
+}
+```
\ No newline at end of file
diff --git a/Challenge-Add-Elements-within-your-Bootstrap-Wells.md b/Challenge-Add-Elements-within-your-Bootstrap-Wells.md
new file mode 100644
index 0000000..d9fd630
--- /dev/null
+++ b/Challenge-Add-Elements-within-your-Bootstrap-Wells.md
@@ -0,0 +1,2 @@
+# Add Elements within your Bootstrap Wells
+Once you have gone deep enough in `divs` you can start adding your Bootstrap buttons.
diff --git a/Challenge-Add-Font-Awesome-Icons-to-all-of-our-Buttons.md b/Challenge-Add-Font-Awesome-Icons-to-all-of-our-Buttons.md
new file mode 100644
index 0000000..7a96926
--- /dev/null
+++ b/Challenge-Add-Font-Awesome-Icons-to-all-of-our-Buttons.md
@@ -0,0 +1,4 @@
+# Add Font Awesome Icons to all of our Buttons
+`<i class="fa fa-trash"></i>` Will add a trash can icon.
+
+`<i class="fa fa-info-circle"></i>` Will add an info icon.
diff --git a/Challenge-Add-Font-Awesome-Icons-to-our-Buttons.md b/Challenge-Add-Font-Awesome-Icons-to-our-Buttons.md
new file mode 100644
index 0000000..97078be
--- /dev/null
+++ b/Challenge-Add-Font-Awesome-Icons-to-our-Buttons.md
@@ -0,0 +1,4 @@
+# Add Font Awesome Icons to our Buttons
+Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the .svg file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.
+
+`<i class="fa fa-thumbs-up"><button class="btn btn-block btn-primary">Like</i></button>`
diff --git a/Challenge-Add-ID-Attributes-to-Bootstrap-Elements.md b/Challenge-Add-ID-Attributes-to-Bootstrap-Elements.md
new file mode 100644
index 0000000..fcb058c
--- /dev/null
+++ b/Challenge-Add-ID-Attributes-to-Bootstrap-Elements.md
@@ -0,0 +1,4 @@
+# Add ID Attributes to Bootstrap Elements
+Recall that in addition to class attributes, you can give each of your elements an id attribute.
+
+Each id should be unique to a specific element. Remember that you can give an element an id like this: `<div class="well" id="center-well">`
diff --git a/Challenge-Add-Images-to-your-Website.md b/Challenge-Add-Images-to-your-Website.md
new file mode 100644
index 0000000..81cd2fc
--- /dev/null
+++ b/Challenge-Add-Images-to-your-Website.md
@@ -0,0 +1,3 @@
+You can add images to your website by using the `img` element, and point to an specific image's URL using the `src` attribute.
+
+An example of this would be `<img src="www.your-image-source.com/your-image.jpg">`. Note that in most cases, img elements are self-closing.
\ No newline at end of file
diff --git a/Challenge-Add-New-Properties-to-a-JavaScript-Object.md b/Challenge-Add-New-Properties-to-a-JavaScript-Object.md
new file mode 100644
index 0000000..320cf00
--- /dev/null
+++ b/Challenge-Add-New-Properties-to-a-JavaScript-Object.md
@@ -0,0 +1,3 @@
+# Add New Properties to a JavaScript Object
+
+You can add new properties to existing JavaScript objects the same way you would modify them. Here is how: `myDog.bark = "woof-woof";`
diff --git a/Challenge-Add-Placeholder-Text-to-a-Text-Field.md b/Challenge-Add-Placeholder-Text-to-a-Text-Field.md
new file mode 100644
index 0000000..44ae3bc
--- /dev/null
+++ b/Challenge-Add-Placeholder-Text-to-a-Text-Field.md
@@ -0,0 +1,3 @@
+Your placeholder text is what appears in your text input before your user has inputed anything.
+
+You can create placeholder text like so: `<input type="text" placeholder="this is placeholder text">`.
\ No newline at end of file
diff --git a/Challenge-Add-Rounded-Corners-with-a-Border-Radius.md b/Challenge-Add-Rounded-Corners-with-a-Border-Radius.md
new file mode 100644
index 0000000..57141eb
--- /dev/null
+++ b/Challenge-Add-Rounded-Corners-with-a-Border-Radius.md
@@ -0,0 +1,12 @@
+To make round corners it is all about `border-radius` and pixels.
+
+You can specify a border-radius with pixels. This will affect how rounded the corners are.
+
+```
+.thick-green-border {
+  border-color: green;
+  border-width: 10px;
+  border-style: solid;
+  border-radius: 10px;
+}
+```
\ No newline at end of file
diff --git a/Challenge-Add-Two-Numbers-with-JavaScript.md b/Challenge-Add-Two-Numbers-with-JavaScript.md
new file mode 100644
index 0000000..0dfd506
--- /dev/null
+++ b/Challenge-Add-Two-Numbers-with-JavaScript.md
@@ -0,0 +1,4 @@
+# Add Two Numbers with JavaScript
+JavaScript uses the `+` symbol for addition. It can also be used instead of `parseInt()` but that is beyond this.
+
+`var sum = 10 + 10;`
diff --git a/Challenge-Add-a-Negative-Margin-to-an-Element.md b/Challenge-Add-a-Negative-Margin-to-an-Element.md
new file mode 100644
index 0000000..97b5b0b
--- /dev/null
+++ b/Challenge-Add-a-Negative-Margin-to-an-Element.md
@@ -0,0 +1 @@
+An element's `margin` controls the amount of space between an element's border and surrounding elements. If you set an element's margin to a **negative value**, the element will grow **larger**.
\ No newline at end of file
diff --git a/Challenge-Add-a-Submit-Button-to-a-Form.md b/Challenge-Add-a-Submit-Button-to-a-Form.md
new file mode 100644
index 0000000..75ef7d6
--- /dev/null
+++ b/Challenge-Add-a-Submit-Button-to-a-Form.md
@@ -0,0 +1,8 @@
+You will need to create a `button` element. Here's an example submit button: `<button type="submit">this button submits the form</button>`.
+
+```
+<form action="/submit-cat-photo">
+  <input type="text" placeholder="cat photo URL">
+  <button type="submit">Submit</button>
+</form>
+```
\ No newline at end of file
diff --git a/Challenge-Add-your-JavaScript-Slot-Machine-Slots.md b/Challenge-Add-your-JavaScript-Slot-Machine-Slots.md
new file mode 100644
index 0000000..aca0b0f
--- /dev/null
+++ b/Challenge-Add-your-JavaScript-Slot-Machine-Slots.md
@@ -0,0 +1,10 @@
+# Add your JavaScript Slot Machine Slots
+For this part we should notify if they same number is returned three times or return `null` otherwise.
+
+```
+if(slotOne !== slotTwo || slotTwo !== slotThree){
+      return (null);
+    }
+```
+
+If slot one and two are different, or slot two and three are not the same, then return `null`.
diff --git a/Challenge-Adding-A-Default-Option-In-Switch-Statements.md b/Challenge-Adding-A-Default-Option-In-Switch-Statements.md
new file mode 100644
index 0000000..ce2d458
--- /dev/null
+++ b/Challenge-Adding-A-Default-Option-In-Switch-Statements.md
@@ -0,0 +1,19 @@
+#Waypoint: Adding a default option in Switch statements
+
+In a `switch` statement you may not be able to specify all possible values as `case` statements. Instead, you can add the `default` statement which will be executed if no matching `case` statements are found. Think of it like the final `else` statement in an `if/else` chain.
+
+A `default` statement should be the last case.
+
+```js
+switch (num) {
+  case value1:
+    statement1
+    break;
+  case value2:
+    statement2;
+    break;
+...
+  default:
+    defaultStatement;
+}
+```
\ No newline at end of file
diff --git a/Challenge-Adjust-the-Margin-of-an-Element.md b/Challenge-Adjust-the-Margin-of-an-Element.md
new file mode 100644
index 0000000..0aecc93
--- /dev/null
+++ b/Challenge-Adjust-the-Margin-of-an-Element.md
@@ -0,0 +1,9 @@
+An element's `margin` controls the amount of space between an element's `border` and surrounding elements.
+
+```
+.green-box {
+  background-color: green;
+  padding: 20px;
+  margin: 20px;
+}
+```
\ No newline at end of file
diff --git a/Challenge-Adjusting-the-Padding-of-an-Element.md b/Challenge-Adjusting-the-Padding-of-an-Element.md
new file mode 100644
index 0000000..660c885
--- /dev/null
+++ b/Challenge-Adjusting-the-Padding-of-an-Element.md
@@ -0,0 +1,8 @@
+HTML elements are essentially little rectangles. Three important attributes control the space that surrounds each HTML element: `padding`, `margin`, and `border`. An element's padding controls the amount of space between the element and its border.
+
+```
+.green-box {
+  background-color: green;
+  padding: 20px;
+}
+```
\ No newline at end of file
diff --git a/Challenge-Appending-Variables-to-Strings.md b/Challenge-Appending-Variables-to-Strings.md
new file mode 100644
index 0000000..c4b9610
--- /dev/null
+++ b/Challenge-Appending-Variables-to-Strings.md
@@ -0,0 +1,10 @@
+# Appending Variables to Strings
+Just as we can build a string over multiple lines out of string literals, we can also append variables to a string using the plus equals `+=` operator.
+
+## Example
+
+```js
+var anAdjective = "awesome!";
+var ourStr = "Free Code Camp is ";
+ourStr += anAdjective;
+```
diff --git a/Challenge-Apply-the-Default-Bootstrap-Button-Style.md b/Challenge-Apply-the-Default-Bootstrap-Button-Style.md
new file mode 100644
index 0000000..3a45b1d
--- /dev/null
+++ b/Challenge-Apply-the-Default-Bootstrap-Button-Style.md
@@ -0,0 +1,23 @@
+# Apply the Default Bootstrap Button Style
+Bootstrap has a button class called `btn-default`
+
+```
+<div class="container-fluid">
+  <h3 class="text-primary text-center">jQuery Playground</h3>
+  <div class="row">
+    <div class="col-xs-6">
+      <div class="well">
+        <button class="btn btn-default"></button>
+        <button class="btn btn-default"></button>
+        <button class="btn btn-default"></button>
+      </div>
+    </div>
+    <div class="col-xs-6">
+      <div class="well">
+        <button class="btn btn-default"></button>
+        <button class="btn btn-default"></button>
+        <button class="btn btn-default"></button>
+      </div>
+    </div>
+  </div>
+</div>
diff --git a/Challenge-Assignment-With-A-Returned-Value.md b/Challenge-Assignment-With-A-Returned-Value.md
new file mode 100644
index 0000000..3cc5c2d
--- /dev/null
+++ b/Challenge-Assignment-With-A-Returned-Value.md
@@ -0,0 +1,11 @@
+#Waypoint: Assignment with a Returned Value
+
+If you'll recall from our discussion of Storing Values with the Equal Operator, everything to the right of the equal sign is resolved before the value is assigned. This means we can take the return value of a function and assign it to a variable.
+
+Assume we have pre-defined a function `sum` which adds two numbers together, then:
+
+```js
+var ourSum = sum(5, 12);
+```
+
+will call `sum` function, which returns a value of `17` and assigns it to `ourSum` variable.
\ No newline at end of file
diff --git a/Challenge-Assignment-with-Divided-by-Equals.md b/Challenge-Assignment-with-Divided-by-Equals.md
new file mode 100644
index 0000000..6de5641
--- /dev/null
+++ b/Challenge-Assignment-with-Divided-by-Equals.md
@@ -0,0 +1,8 @@
+# Assignment with Divided by Equals
+The `/= operator` divides a variable by another number.
+
+`myVar = myVar / 5;`
+
+Will divide `myVar` by `5`. This can be rewritten as:
+
+`myVar /= 5;`
diff --git a/Challenge-Assignment-with-Minus-Equals.md b/Challenge-Assignment-with-Minus-Equals.md
new file mode 100644
index 0000000..f4beec2
--- /dev/null
+++ b/Challenge-Assignment-with-Minus-Equals.md
@@ -0,0 +1,8 @@
+# Assignment with Minus Equals
+Like the `+= operator`, `-=` subtracts a number from a variable.
+
+`myVar = myVar - 5;`
+
+will subtract `5` from `myVar`. This can be rewritten as:
+
+`myVar -= 5;`
diff --git a/Challenge-Assignment-with-Plus-Equals.md b/Challenge-Assignment-with-Plus-Equals.md
new file mode 100644
index 0000000..8cf37ec
--- /dev/null
+++ b/Challenge-Assignment-with-Plus-Equals.md
@@ -0,0 +1,11 @@
+# Assignment with Plus Equals
+Everything to the right of the equals sign is evaluated first, so we can say `myVar = myVar + 5;` to add `5` to `myVar`. Since this is such a common pattern, there are operators which do both a mathematical operation and assignment in one step.
+
+One such operator is the `+= operator`.
+
+`myVar += 5;` will add 5 to myVar instead of using any of the follwoing:
+
+```js
+myVar = 5 + myVar;
+myVar = myvar + 5;
+```
diff --git a/Challenge-Assignment-with-Times-Equals.md b/Challenge-Assignment-with-Times-Equals.md
new file mode 100644
index 0000000..daf6c50
--- /dev/null
+++ b/Challenge-Assignment-with-Times-Equals.md
@@ -0,0 +1,15 @@
+# Author
+![@Rafase282](https://avatars0.githubusercontent.com/Rafase282?&s=128)
+
+Submitted by Rafase282
+
+[Github](https://github.com/Rafase282) | [FreeCodeCamp](http://www.freecodecamp.com/rafase282) | [CodePen](http://codepen.io/Rafase282/) | [LinkedIn](https://www.linkedin.com/in/rafase282) | [Blog/Site](https://rafase282.wordpress.com/) | [E-Mail](mailto:rafase282@gmail.com)
+
+# Assignment with Times Equals
+The `*= operator` multiplies a variable by a number.
+
+`myVar = myVar * 5;`
+
+will multiply `myVar` by `5`. This can be rewritten as:
+
+`myVar *= 5;`
diff --git a/Challenge-Bring-your-JavaScript-Slot-Machine-to-Life.md b/Challenge-Bring-your-JavaScript-Slot-Machine-to-Life.md
new file mode 100644
index 0000000..a1fe620
--- /dev/null
+++ b/Challenge-Bring-your-JavaScript-Slot-Machine-to-Life.md
@@ -0,0 +1,10 @@
+# Bring your JavaScript Slot Machine to Life
+Let's use the jQuery selector `$(".slot")` to select all of the slots.
+
+Once they are all selected, we can use bracket notation to access each individual slot:
+
+```
+$($(".slot")[0]).html(slotOne);
+$($(".slot")[1]).html(slotTwo);
+$($(".slot")[2]).html(slotThree);
+```
diff --git a/Challenge-Build-JavaScript-Objects.md b/Challenge-Build-JavaScript-Objects.md
new file mode 100644
index 0000000..13b62dc
--- /dev/null
+++ b/Challenge-Build-JavaScript-Objects.md
@@ -0,0 +1,15 @@
+# Build JavaScript Objects
+Objects are similar to arrays, except that instead of using indexes to access and modify their data, you access the data in objects through what are called properties.
+
+Here's a sample object:
+
+```
+var cat = {
+ "name": "Whiskers",
+ "legs": 4,
+ "tails": 1,
+ "enemies": ["Water", "Dogs"]
+};
+```
+
+Objects are useful for storing data in a structured way, and can represents real world objects, like a cats.
diff --git a/Challenge-Call-out-Optional-Actions-with-Button-Info.md b/Challenge-Call-out-Optional-Actions-with-Button-Info.md
new file mode 100644
index 0000000..2d89eaa
--- /dev/null
+++ b/Challenge-Call-out-Optional-Actions-with-Button-Info.md
@@ -0,0 +1,4 @@
+# Call out Optional Actions with Button Info
+Bootstrap comes with several pre-defined colors for buttons. The `btn-info` class is used to call attention to optional actions that the user can take. Note that these buttons still need the `btn` and`btn-block` classes.
+
+`<button class= "btn btn-block btn-info">Info</button>`
diff --git a/Challenge-Center-Text-with-Bootstrap.md b/Challenge-Center-Text-with-Bootstrap.md
new file mode 100644
index 0000000..2773247
--- /dev/null
+++ b/Challenge-Center-Text-with-Bootstrap.md
@@ -0,0 +1,4 @@
+# Center Text with Bootstrap
+Now that we're using Bootstrap, we can center our heading elements to make them look better. All we need to do is add the class text-center to our h1 and h2 elements.
+
+Remember that you can add several classes to the same element by separating each of them with a space, like this: `<h2 class="text-red text-center">your text</h2>`.
diff --git a/Challenge-Chaining-If-Else-Statements.md b/Challenge-Chaining-If-Else-Statements.md
new file mode 100644
index 0000000..3ab49e8
--- /dev/null
+++ b/Challenge-Chaining-If-Else-Statements.md
@@ -0,0 +1,16 @@
+#Waypoint: Chaining If Else Statements
+
+`if/else` statements can be chained together for complex logic. Here is `pseudocode` of multiple chained `if` / `else if` statements:
+
+```js
+if(condition1) {
+  statement1
+} else if (condition2) {
+  statement2
+} else if (condition3) {
+  statement3
+. . .
+} else {
+  statementN
+}
+```
diff --git a/Challenge-Change-Text-Inside-an-Element-Using-jQuery.md b/Challenge-Change-Text-Inside-an-Element-Using-jQuery.md
new file mode 100644
index 0000000..eed3e3a
--- /dev/null
+++ b/Challenge-Change-Text-Inside-an-Element-Using-jQuery.md
@@ -0,0 +1,10 @@
+# Change Text Inside an Element Using jQuery
+Using jQuery, you can change the text between the start and end tags of an element. You can even change HTML markup.
+
+jQuery has a function called `.html()` that lets you add HTML tags and text within an element. Any content previously within the element will be completely replaced with the content you provide using this function.
+
+Here's how you would rewrite and italicize the text of our heading:
+
+`$("h3").html("<i>jQuery Funhouse</i>");`
+
+jQuery also has a similar function called `.text()` that only alters text without adding tags. So when using `.html()` please remember that you will be editing the whole markup and not just the text.
diff --git a/Challenge-Change-Text-with-Click-Events.md b/Challenge-Change-Text-with-Click-Events.md
new file mode 100644
index 0000000..f0aaf1b
--- /dev/null
+++ b/Challenge-Change-Text-with-Click-Events.md
@@ -0,0 +1,4 @@
+# Change Text with Click Events
+When a click event happens, we can use Ajax to update an HTML element with the following code `$(".message").html("Here is the message");`
+
+This tells jQuery to use the class `message` as the selector and to that, change the HTML to have the string provide, we can also ass custom html elements wrapped in quotation marks.
diff --git a/Challenge-Change-the-CSS-of-an-Element-Using-jQuery.md b/Challenge-Change-the-CSS-of-an-Element-Using-jQuery.md
new file mode 100644
index 0000000..84d7143
--- /dev/null
+++ b/Challenge-Change-the-CSS-of-an-Element-Using-jQuery.md
@@ -0,0 +1,13 @@
+# Change the CSS of an Element Using jQuery
+We can also change the CSS of an HTML element directly with jQuery.
+
+Query has a function called `.css()` that allows you to change the CSS of an element.
+
+```
+<script>
+  $(document).ready(function() {
+    $("#target1").css("color", "red");
+
+  });
+</script>
+```
diff --git a/Challenge-Change-the-Color-of-Text.md b/Challenge-Change-the-Color-of-Text.md
new file mode 100644
index 0000000..6ab7609
--- /dev/null
+++ b/Challenge-Change-the-Color-of-Text.md
@@ -0,0 +1,3 @@
+CSS allows us to change  many styles. To change the color of an element we use `color`.
+
+Here's how you would set your h2 element's text color to blue: `<h2 style="color: blue">CatPhotoApp</h2>`.
\ No newline at end of file
diff --git a/Challenge-Change-the-Font-Size-of-an-Element.md b/Challenge-Change-the-Font-Size-of-an-Element.md
new file mode 100644
index 0000000..ea468b1
--- /dev/null
+++ b/Challenge-Change-the-Font-Size-of-an-Element.md
@@ -0,0 +1,5 @@
+Font size is controlled by the `font-size` CSS attribute, like this: `h1 { font-size: 30px; }`.
+
+px is a unit that stands for [pixels](https://en.wikipedia.org/wiki/Pixel)
+
+Although this waypoint requires the use of px, there are [other units of size measurements used](http://www.w3.org/Style/Examples/007/units.en.html)
\ No newline at end of file
diff --git a/Challenge-Check-Radio-Buttons-and-Checkboxes-by-Default.md b/Challenge-Check-Radio-Buttons-and-Checkboxes-by-Default.md
new file mode 100644
index 0000000..145bee2
--- /dev/null
+++ b/Challenge-Check-Radio-Buttons-and-Checkboxes-by-Default.md
@@ -0,0 +1,3 @@
+You can set a checkbox or radio button to be checked by default using the checked attribute.
+
+To do this, just add the word "checked" to the inside of an input element. For example, `<input type="radio" name="test-name" checked>`.
\ No newline at end of file
diff --git a/Challenge-Check-the-Length-Property-of-a-String-Variable.md b/Challenge-Check-the-Length-Property-of-a-String-Variable.md
new file mode 100644
index 0000000..0e964f5
--- /dev/null
+++ b/Challenge-Check-the-Length-Property-of-a-String-Variable.md
@@ -0,0 +1,4 @@
+# Check the Length Property of a String Variable
+Data structures have properties. For example, strings have a property called `.length` that will tell you how many characters are in the string.
+
+`lastNameLength = lastName.length;`
diff --git a/Challenge-Clone-an-Element-Using-jQuery.md b/Challenge-Clone-an-Element-Using-jQuery.md
new file mode 100644
index 0000000..adf36f3
--- /dev/null
+++ b/Challenge-Clone-an-Element-Using-jQuery.md
@@ -0,0 +1,4 @@
+# Clone an Element Using jQuery
+jQuery has a function called`clone()` that makes a copy of an element.
+
+For example, if we wanted to copy target2 from our left-well to our right-well, we would use `$("#target2").clone().appendTo("#right-well");`
diff --git a/Challenge-Comment-out-HTML.md b/Challenge-Comment-out-HTML.md
new file mode 100644
index 0000000..3e1e82e
--- /dev/null
+++ b/Challenge-Comment-out-HTML.md
@@ -0,0 +1,15 @@
+Commenting is a way that you can leave comments within your code without affecting the code itself.
+
+It is also a convenient way to make code inactive without having to delete it entirely.
+
+You can start a comment with `<!-- and end a comment with -->`.
+
+```
+<!--
+<h1>Hello World</h1>
+
+<h2>CatPhotoApp</h2>
+
+<p>Hello Paragraph</p>
+-->
+```
\ No newline at end of file
diff --git a/Challenge-Comment-your-JavaScript-Code.md b/Challenge-Comment-your-JavaScript-Code.md
new file mode 100644
index 0000000..d799f5e
--- /dev/null
+++ b/Challenge-Comment-your-JavaScript-Code.md
@@ -0,0 +1,10 @@
+# Comment your JavaScript Code
+Comments are a great way to leave notes to yourself and to other people who will later need to figure out what it does. Any code in it will be ignored.
+
+Let's take a look at the two ways you can write comments in JavaScript.
+- The double-slash comment will comment out the remainder of the text on the current line:
+
+`// This is a comment.`
+- The slash-star-star-slash comment will comment out everything between the `/*` and the `*/` characters:
+
+`/* This is also a comment */`
diff --git a/Challenge-Comparison-With-The-Equality-Operator.md b/Challenge-Comparison-With-The-Equality-Operator.md
new file mode 100644
index 0000000..527c70f
--- /dev/null
+++ b/Challenge-Comparison-With-The-Equality-Operator.md
@@ -0,0 +1,28 @@
+##Waypoint: Comparison with the Equality Operator
+
+There are many `Comparison Operators` in JavaScript. All of these operators return a boolean `true` or `false` value.
+
+The most basic operator is the equality operator `==`. The equality operator compares two values and returns `true` if they're equivalent or `false` if they are not. Note that equality is different from assignment (=), which assigns the value at the right of the operator to a variable in the left.
+
+```js
+function equalityTest(myVal) {
+  if (myVal == 10) {
+     return "Equal";
+  }
+  return "Not Equal";
+}
+```
+
+If `myVal` is equal to `10`, the function will return "Equal". If it is not, the function will return "Not Equal".
+
+The equality operator will do its best to convert values for comparison, for example:
+
+```js
+   1   ==  1        // true
+  "1"  ==  1        // true
+   1   == '1'       // true
+   0   == false     // true
+   0   == null      // false
+   0   == undefined // false
+ null  == undefined // true
+```
\ No newline at end of file
diff --git a/Challenge-Comparison-With-The-Greater-Than-Equal-To-Operator.md b/Challenge-Comparison-With-The-Greater-Than-Equal-To-Operator.md
new file mode 100644
index 0000000..9032b28
--- /dev/null
+++ b/Challenge-Comparison-With-The-Greater-Than-Equal-To-Operator.md
@@ -0,0 +1,14 @@
+#Waypoint: Comparison with the Greater Than Equal To Operator
+
+The greater than equal to operator (`>=`) compares the values of two numbers. If the number to the left is greater than or equal to the number to the right, it returns `true`. Otherwise, it returns `false`.
+
+Like the equality operator, greater than equal to operator will convert data types while comparing.
+
+##Examples
+
+```js
+ 6  >=  6  // true
+ 7  >= '3' // true
+ 2  >=  3  // false
+'7' >=  9  // false
+```
diff --git a/Challenge-Comparison-With-The-Greater-Than-Operator.md b/Challenge-Comparison-With-The-Greater-Than-Operator.md
new file mode 100644
index 0000000..60d95b8
--- /dev/null
+++ b/Challenge-Comparison-With-The-Greater-Than-Operator.md
@@ -0,0 +1,14 @@
+#Waypoint: Comparison with the Greater Than Operator
+
+The greater than operator (`>`) compares the values of two numbers. If the number to the left is greater than the number to the right, it returns `true`. Otherwise, it returns `false`.
+
+Like the equality operator, greater than operator will convert data types of values while comparing.
+
+##Examples
+
+```js
+ 5 > 3   // true
+ 7 > '3' // true
+ 2 > 3   // false
+'1' > 9  // false
+```
diff --git a/Challenge-Comparison-With-The-Inequality-Operator.md b/Challenge-Comparison-With-The-Inequality-Operator.md
new file mode 100644
index 0000000..ab6ccb2
--- /dev/null
+++ b/Challenge-Comparison-With-The-Inequality-Operator.md
@@ -0,0 +1,13 @@
+#Waypoint: Comparison with the Inequality Operator
+
+The inequality operator (`!=`) is the opposite of the equality operator. It means "Not Equal" and returns `false` where equality would return `true` and vice versa. Like the equality operator, the inequality operator will convert data types of values while comparing.
+
+##Examples
+
+```js
+1 != 2      // true
+1 != "1"    // false
+1 != '1'    // false
+1 != true   // false
+0 != false  // false
+```
\ No newline at end of file
diff --git a/Challenge-Comparison-With-The-Less-Than-Equal-To-Operator.md b/Challenge-Comparison-With-The-Less-Than-Equal-To-Operator.md
new file mode 100644
index 0000000..b06cba0
--- /dev/null
+++ b/Challenge-Comparison-With-The-Less-Than-Equal-To-Operator.md
@@ -0,0 +1,13 @@
+#Waypoint: Comparison with the Less Than Equal To Operator
+
+The less than equal to operator (`<=`) compares the values of two numbers. If the number to the left is less than or equal the number to the right, it returns `true`. If the number on the left is greater than the number on the right, it returns `false`. Like the equality operator, `less than equal to` converts data types.
+
+##Examples
+
+```js
+  4 <= 5  // true
+'7' <= 7  // true
+  5 <= 5  // true
+  3 <= 2  // false
+'8' <= 4  // false
+```
\ No newline at end of file
diff --git a/Challenge-Comparison-With-The-Less-Than-Operator.md b/Challenge-Comparison-With-The-Less-Than-Operator.md
new file mode 100644
index 0000000..1a64dfe
--- /dev/null
+++ b/Challenge-Comparison-With-The-Less-Than-Operator.md
@@ -0,0 +1,13 @@
+#Waypoint: Comparison with the Less Than Operator
+
+The less than operator (`<`) compares the values of two numbers. If the number to the left is less than the number to the right, it returns `true`. Otherwise, it returns `false`. Like the equality operator, less than operator converts data types while comparing.
+
+##Examples
+
+```js
+  2 < 5  // true
+'3' < 7  // true
+  5 < 5  // false
+  3 < 2  // false
+'8' < 4  // false
+```
diff --git a/Challenge-Comparison-With-The-Strict-Equality-Operator.md b/Challenge-Comparison-With-The-Strict-Equality-Operator.md
new file mode 100644
index 0000000..03a3f3d
--- /dev/null
+++ b/Challenge-Comparison-With-The-Strict-Equality-Operator.md
@@ -0,0 +1,12 @@
+#Waypoint: Comparison with the Strict Equality Operator
+
+Strict equality (`===`) is the counterpart to the equality operator (`==`). Unlike the equality operator, strict equality tests both the `type` and `value` of the compared elements.
+
+##Examples
+
+```js
+3 === 3   // true
+3 === '3' // false
+```
+
+*In the second example, `3` is a `Number` type and `'3'` is a `String` type.*
\ No newline at end of file
diff --git a/Challenge-Comparison-With-The-Strict-Inequality-Operator.md b/Challenge-Comparison-With-The-Strict-Inequality-Operator.md
new file mode 100644
index 0000000..e1227f5
--- /dev/null
+++ b/Challenge-Comparison-With-The-Strict-Inequality-Operator.md
@@ -0,0 +1,11 @@
+#Waypoint: Comparison with the Strict Inequality Operator
+
+The strict inequality operator (`!==`) is the opposite of the strict equality operator. It means "Strictly Not Equal" and returns `false` where strict equality would return `true` and vice versa. Strict inequality will not convert data types.
+
+##Examples
+
+```js
+3 !== 3   // false
+3 !== '3' // true
+4 !== 3   // true
+```
diff --git a/Challenge-Comparisons-With-The-Logical-And-Operator.md b/Challenge-Comparisons-With-The-Logical-And-Operator.md
new file mode 100644
index 0000000..a9e7a93
--- /dev/null
+++ b/Challenge-Comparisons-With-The-Logical-And-Operator.md
@@ -0,0 +1,23 @@
+#Waypoint: Comparisons with the Logical And Operator
+
+Sometimes you will need to test more than one thing at a time. The `logical and` operator (`&&`) returns `true` if and only if the `operands` to the left and right of it are true.
+
+The same effect could be achieved by nesting an if statement inside another if:
+
+```js
+if (num > 5) {
+  if (num < 10) {
+    return "Yes";
+  }
+}
+return "No";
+```
+
+will only return "Yes" if `num` is between `6` and `9` (6 and 9 included). The same logic can be written as:
+
+```js
+if (num > 5 && num < 10) {
+  return "Yes";
+}
+return "No";
+```
\ No newline at end of file
diff --git a/Challenge-Comparisons-With-The-Logical-Or-Operator.md b/Challenge-Comparisons-With-The-Logical-Or-Operator.md
new file mode 100644
index 0000000..c51f6eb
--- /dev/null
+++ b/Challenge-Comparisons-With-The-Logical-Or-Operator.md
@@ -0,0 +1,24 @@
+#Waypoint: Comparisons with the Logical Or Operator
+
+The `logical or` operator (`||`) returns `true` if either of the `operands` is `true`. Otherwise, it returns `false`.
+
+The pattern below should look familiar from prior waypoints:
+
+```js
+if (num > 10) {
+  return "No";
+}
+if (num < 5) {
+    return "No";
+}
+return "Yes";
+```
+
+will return "Yes" only if `num` is between `5` and `10` (5 and 10 included). The same logic can be written as:
+
+```js
+if (num > 10 || num < 5) {
+  return "No";
+}
+return "Yes";
+```
\ No newline at end of file
diff --git a/Challenge-Concatenate-Strings-with-.concat.md b/Challenge-Concatenate-Strings-with-.concat.md
new file mode 100644
index 0000000..6470124
--- /dev/null
+++ b/Challenge-Concatenate-Strings-with-.concat.md
@@ -0,0 +1,3 @@
+`.concat()` can be used to merge the contents of two arrays into one.
+
+`array = array.concat(otherArray);`
diff --git a/Challenge-Concatenating-Strings-with-Plus-Operator.md b/Challenge-Concatenating-Strings-with-Plus-Operator.md
new file mode 100644
index 0000000..a1c6178
--- /dev/null
+++ b/Challenge-Concatenating-Strings-with-Plus-Operator.md
@@ -0,0 +1,8 @@
+# Concatenating Strings with Plus Operator
+In JavaScript, when the `+` operator is used with a String value, it is called the `concatenation` operator. You can build a new string out of other strings by concatenating them together.
+
+## Example
+`'My name is Alan,' + ' I concatenate.'`
+
+## Note
+Watch out for spaces. Concatenation does not add spaces between concatenated strings, so you'll need to add them yourself.
diff --git a/Challenge-Concatenating-Strings-with-the-Plus-Equals-Operator.md b/Challenge-Concatenating-Strings-with-the-Plus-Equals-Operator.md
new file mode 100644
index 0000000..380c352
--- /dev/null
+++ b/Challenge-Concatenating-Strings-with-the-Plus-Equals-Operator.md
@@ -0,0 +1,12 @@
+# Concatenating Strings with the Plus Equals Operator
+We can use the `+=` operator to concatenate a string onto the end of an existing string variable. This can be very helpful to break a long string over several lines.
+
+## Note
+Watch out for spaces. Concatenation does not add spaces between concatenated strings, so you'll need to add them yourself.
+
+## Example
+
+```js
+var ourStr = "I come first. ";
+ourStr += "I come second.";
+```
diff --git a/Challenge-Condense-arrays-with-reduce.md b/Challenge-Condense-arrays-with-reduce.md
new file mode 100644
index 0000000..b7ef793
--- /dev/null
+++ b/Challenge-Condense-arrays-with-reduce.md
@@ -0,0 +1,13 @@
+Reduce can be useful for condensing an array of numbers into one value.
+
+```
+var array = [4,5,6,7,8];
+var singleVal = 0;
+// Only change code below this line.
+
+var singleVal = array.reduce(function(previousVal, currentVal){
+
+  return previousVal+currentVal;
+
+});
+```
\ No newline at end of file
diff --git a/Challenge-Construct-JavaScript-Objects-with-Functions.md b/Challenge-Construct-JavaScript-Objects-with-Functions.md
new file mode 100644
index 0000000..4d61f56
--- /dev/null
+++ b/Challenge-Construct-JavaScript-Objects-with-Functions.md
@@ -0,0 +1,13 @@
+## Construct JavaScript Objects with Functions
+Using constructors it is easy to create new objects using a blueprint or constructor. The declaration syntax is a little different but still easy to remember.
+
+```
+// Let's add the properties engines and seats to the car in the same way that the property wheels has been added below. They should both be numbers.
+var Car = function() {
+  this.wheels = 4;
+  this.engines = 1;
+  this.seats = 1;
+};
+
+var myCar = new Car();
+```
\ No newline at end of file
diff --git a/Challenge-Constructing-Strings-with-Variables.md b/Challenge-Constructing-Strings-with-Variables.md
new file mode 100644
index 0000000..dbc92be
--- /dev/null
+++ b/Challenge-Constructing-Strings-with-Variables.md
@@ -0,0 +1,9 @@
+# Constructing Strings with Variables
+Sometimes you will need to build a string, [Mad Libs](https://en.wikipedia.org/wiki/Mad_Libs) style. By using the concatenation operator `+`, you can insert one or more variables into a string you're building.
+
+## Example
+
+```js
+var ourName = "Free Code Camp";
+var ourStr = "Hello, our name is " + ourName + ", how are you?";
+```
diff --git a/Challenge-Convert-JSON-Data-to-HTML.md b/Challenge-Convert-JSON-Data-to-HTML.md
new file mode 100644
index 0000000..b8ff62a
--- /dev/null
+++ b/Challenge-Convert-JSON-Data-to-HTML.md
@@ -0,0 +1,24 @@
+# Convert JSON Data to HTML
+Once you know how to get data from the JSON call then is time to learn how to iterate through it. We can use the .map() method to loop through our data and modify our HTML elements.
+
+Here is a code that does that:
+
+```js
+// calling map on the json variable and using a custom callback function.
+json.map(function(val) {
+
+  // Adding each object keys
+  var keys = Object.keys(val);
+  // Generating new html
+  html += "<div class = 'cat'>";
+  // Adding the custom html to each key
+  keys.map(function(key) {
+
+    html += "<b>" + key + "</b>: " + val[key] + "<br>";
+
+  });
+
+  html += "</div><br>";
+
+});
+```
diff --git a/Challenge-Count-Backwards-With-a-For-Loop.md b/Challenge-Count-Backwards-With-a-For-Loop.md
new file mode 100644
index 0000000..2c219b0
--- /dev/null
+++ b/Challenge-Count-Backwards-With-a-For-Loop.md
@@ -0,0 +1,18 @@
+# Count Backwards With a For Loop
+A for loop can also count backwards, so long as we can define the right conditions.
+
+In order to count backwards by twos, we'll need to change our `initialization`, `condition`, and `final-expression`.
+
+We'll start at `i = 10` and loop while `i > 0`. We'll decrement `i` by `2` each loop with `i -= 2`.
+
+```js
+var ourArray = [];
+
+for(var i = 10; i > 0; i -= 2) {
+
+  ourArray.push(i);
+
+}
+```
+
+ourArray will now contain `[10,8,6,4,2]`
diff --git a/Challenge-Create-Bootstrap-Wells.md b/Challenge-Create-Bootstrap-Wells.md
new file mode 100644
index 0000000..7da9ee4
--- /dev/null
+++ b/Challenge-Create-Bootstrap-Wells.md
@@ -0,0 +1,26 @@
+# Create Bootstrap Wells
+Bootstrap has a class called `well` that can create a visual sense of depth for your columns.
+
+Nest one div element with the class well within each of your `col-xs-6 div` elements.
+
+```
+<div class="container-fluid">
+  <h3 class="text-primary text-center">jQuery Playground</h3>
+  <div class="row">
+    <div class="col-xs-6">
+      <div class="well">
+
+
+
+      </div>
+    </div>
+    <div class="col-xs-6">
+      <div class="well">
+
+
+
+      </div>
+    </div>
+  </div>
+</div>
+```
diff --git a/Challenge-Create-Decimal-Numbers-with-JavaScript.md b/Challenge-Create-Decimal-Numbers-with-JavaScript.md
new file mode 100644
index 0000000..00e9f37
--- /dev/null
+++ b/Challenge-Create-Decimal-Numbers-with-JavaScript.md
@@ -0,0 +1,2 @@
+# Create Decimal Numbers with JavaScript
+JavaScript number variables can have decimals. `var myDecimal = 2.8;`
diff --git a/Challenge-Create-a-Block-Element-Bootstrap-Button.md b/Challenge-Create-a-Block-Element-Bootstrap-Button.md
new file mode 100644
index 0000000..ae78f23
--- /dev/null
+++ b/Challenge-Create-a-Block-Element-Bootstrap-Button.md
@@ -0,0 +1,4 @@
+# Create a Block Element Bootstrap Button
+Normally, your button elements are only as wide as the text that they contain. By making them block elements, your button will stretch to fill your page's entire horizontal space. Note that these buttons still need the `btn` class.
+
+`<button class="btn btn-block">Like</button>`
diff --git a/Challenge-Create-a-Bootstrap-Button.md b/Challenge-Create-a-Bootstrap-Button.md
new file mode 100644
index 0000000..1f1ef74
--- /dev/null
+++ b/Challenge-Create-a-Bootstrap-Button.md
@@ -0,0 +1,4 @@
+# Create a Bootstrap Button
+Bootstrap has its own styles for button elements, which look much better than the plain HTML ones.
+
+`<button type="submit" class="btn">Like</button>`
diff --git a/Challenge-Create-a-Bootstrap-Headline.md b/Challenge-Create-a-Bootstrap-Headline.md
new file mode 100644
index 0000000..59d104b
--- /dev/null
+++ b/Challenge-Create-a-Bootstrap-Headline.md
@@ -0,0 +1,2 @@
+# Create a Bootstrap Headline
+`<h3 class="text-primary text-center"> jQuery Playground </h3>`
diff --git a/Challenge-Create-a-Bootstrap-Row.md b/Challenge-Create-a-Bootstrap-Row.md
new file mode 100644
index 0000000..2bf1951
--- /dev/null
+++ b/Challenge-Create-a-Bootstrap-Row.md
@@ -0,0 +1,2 @@
+# Create a Bootstrap Row
+Create a div element with the class row. `<div class="row"></div>`
diff --git a/Challenge-Create-a-Bulleted-Unordered-List.md b/Challenge-Create-a-Bulleted-Unordered-List.md
new file mode 100644
index 0000000..2bcb687
--- /dev/null
+++ b/Challenge-Create-a-Bulleted-Unordered-List.md
@@ -0,0 +1,14 @@
+HTML has a special element for creating unordered lists, or bullet point-style lists.
+
+Unordered lists start with a `<ul>` element. Then they contain some number of `<li>` elements.
+
+For example:
+
+```
+<ul>
+  <li>milk</li>
+  <li>cheese</li>
+</ul>
+```
+
+would create a bullet point-style list of "milk" and "cheese".
\ No newline at end of file
diff --git a/Challenge-Create-a-Class-to-Target-with-jQuery-Selectors.md b/Challenge-Create-a-Class-to-Target-with-jQuery-Selectors.md
new file mode 100644
index 0000000..71e9322
--- /dev/null
+++ b/Challenge-Create-a-Class-to-Target-with-jQuery-Selectors.md
@@ -0,0 +1,4 @@
+# Create a Class to Target with jQuery Selectors
+Not every class needs to have corresponding CSS. Sometimes we create classes just for the purpose of selecting these elements more easily using jQuery.
+
+For this we use the `target` class on the `button` elements.
diff --git a/Challenge-Create-a-Custom-Heading.md b/Challenge-Create-a-Custom-Heading.md
new file mode 100644
index 0000000..9ed88bb
--- /dev/null
+++ b/Challenge-Create-a-Custom-Heading.md
@@ -0,0 +1,12 @@
+# Create a Custom Heading
+Using `div` and the custom grid layout we can create our own heading.
+
+```
+<div class="row">
+   <div class="col-xs-8">
+     <h2 class="text-primary text-center">CatPhotoApp</h2>
+   </div>
+   <div class="col-xs-4">
+     <a href="#"><img class="img-responsive thick-green-border" src="https://bit.ly/fcc-relaxing-cat"></a>
+   </div>
+```
diff --git a/Challenge-Create-a-Form-Element.md b/Challenge-Create-a-Form-Element.md
new file mode 100644
index 0000000..5215e88
--- /dev/null
+++ b/Challenge-Create-a-Form-Element.md
@@ -0,0 +1,3 @@
+You can build web forms that actually submit data to a server using nothing more than pure HTML. You can do this by specifying an action on your `form` element. 
+
+For example: `<form action="/url-where-you-want-to-submit-form-data"></form>`.
\ No newline at end of file
diff --git a/Challenge-Create-a-JavaScript-Slot-Machine.md b/Challenge-Create-a-JavaScript-Slot-Machine.md
new file mode 100644
index 0000000..0e4dd61
--- /dev/null
+++ b/Challenge-Create-a-JavaScript-Slot-Machine.md
@@ -0,0 +1,8 @@
+# Create a JavaScript Slot Machine
+For this we have to generate three random numbers using the formula they give us and not the general one. `Math.floor(Math.random() * (3 - 1 + 1)) + 1;`
+
+```
+slotOne = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
+slotTwo = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
+slotThree = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
+```
diff --git a/Challenge-Create-a-Set-of-Checkboxes.md b/Challenge-Create-a-Set-of-Checkboxes.md
new file mode 100644
index 0000000..9315061
--- /dev/null
+++ b/Challenge-Create-a-Set-of-Checkboxes.md
@@ -0,0 +1,5 @@
+Checkboxes are a type of input.
+- Each of your checkboxes should be nested within its own label element.
+- All related checkbox inputs should have the same name attribute.
+
+Here's an example of a checkbox: `<label><input type="checkbox" name="personality"> Loving</label>`.
\ No newline at end of file
diff --git a/Challenge-Create-a-Set-of-Radio-Buttons.md b/Challenge-Create-a-Set-of-Radio-Buttons.md
new file mode 100644
index 0000000..f9a5d00
--- /dev/null
+++ b/Challenge-Create-a-Set-of-Radio-Buttons.md
@@ -0,0 +1,5 @@
+You can use radio buttons for questions where you want the user to only give you one answer.
+
+Radio buttons are a type of input. They should all be nested in their own label element. Furthermore, all related radio buttons should have the same name attribute.
+
+Here's an example of a radio button: `<label><input type="radio" name="indoor-outdoor"> Indoor</label>`.
\ No newline at end of file
diff --git a/Challenge-Create-a-Text-Field.md b/Challenge-Create-a-Text-Field.md
new file mode 100644
index 0000000..4d56cfd
--- /dev/null
+++ b/Challenge-Create-a-Text-Field.md
@@ -0,0 +1,3 @@
+Text inputs are a convenient way to get input from your user.
+
+You can create one like this: `<input type="text">`. Note that input elements are self-closing.
\ No newline at end of file
diff --git a/Challenge-Create-an-Ordered-List.md b/Challenge-Create-an-Ordered-List.md
new file mode 100644
index 0000000..f84e03f
--- /dev/null
+++ b/Challenge-Create-an-Ordered-List.md
@@ -0,0 +1,14 @@
+HTML has a special element for creating ordered lists, or numbered-style lists.
+
+Ordered lists start with a `<ol>` element. Then they contain some number of `<li>` elements.
+
+For example:
+
+```
+<ol>
+  <li>hydrogen</li>
+  <li>helium</li>
+</ol>
+```
+
+would create a numbered list of "hydrogen" and "helium".
\ No newline at end of file
diff --git a/Challenge-Declare-JavaScript-Objects-as-Variables.md b/Challenge-Declare-JavaScript-Objects-as-Variables.md
new file mode 100644
index 0000000..7cd2e80
--- /dev/null
+++ b/Challenge-Declare-JavaScript-Objects-as-Variables.md
@@ -0,0 +1,12 @@
+## Declare JavaScript Objects as Variables
+
+This has a simple format. You declare your variable and have it equal to an object in the form `{ key: value}`
+
+```
+var car = {
+  "wheels":4,
+  "engines":1,
+  "seats":5
+};
+```
+
diff --git a/Challenge-Declare-JavaScript-Variables.md b/Challenge-Declare-JavaScript-Variables.md
new file mode 100644
index 0000000..87bcd44
--- /dev/null
+++ b/Challenge-Declare-JavaScript-Variables.md
@@ -0,0 +1,4 @@
+# Declare JavaScript Variables
+When we store data in a data structure, we call it a variable. JavaScript variables are written in `camel case`. An example of camel case is: `camelCase`.
+
+You can declare a variable this way `var myName = "Rafael";`
diff --git a/Challenge-Declare-String-Variables.md b/Challenge-Declare-String-Variables.md
new file mode 100644
index 0000000..6ecca2a
--- /dev/null
+++ b/Challenge-Declare-String-Variables.md
@@ -0,0 +1,4 @@
+# Declare String Variables
+A String variable. It is nothing more than a "string" of characters. JavaScript strings are always wrapped in quotes.
+
+`var myFirstName = 'Rafael';`
diff --git a/Challenge-Decrement-a-Number-with-Javascript.md b/Challenge-Decrement-a-Number-with-Javascript.md
new file mode 100644
index 0000000..47d410f
--- /dev/null
+++ b/Challenge-Decrement-a-Number-with-Javascript.md
@@ -0,0 +1,10 @@
+# Decrement a Number with Javascript
+You can easily decrement or decrease a variable by `1` with the `--` operator.
+
+`i--;`
+
+is the equivalent of
+
+`i = i - 1;`
+
+**Note:** The entire line becomes `i--;`, eliminating the need for the equal sign.
diff --git a/Challenge-Delete-HTML-Elements.md b/Challenge-Delete-HTML-Elements.md
new file mode 100644
index 0000000..133e867
--- /dev/null
+++ b/Challenge-Delete-HTML-Elements.md
@@ -0,0 +1 @@
+Deleting elements is very simple. All you have to do is remove everything from the opening to the closing of the element and it will be removed. No extra code is needed.
\ No newline at end of file
diff --git a/Challenge-Delete-Properties-from-a-JavaScript-Object.md b/Challenge-Delete-Properties-from-a-JavaScript-Object.md
new file mode 100644
index 0000000..2b59233
--- /dev/null
+++ b/Challenge-Delete-Properties-from-a-JavaScript-Object.md
@@ -0,0 +1,26 @@
+# Delete Properties from a JavaScript Object
+We can also delete properties from objects like this:
+
+```js
+delete ourDog.bark;
+```
+
+The **delete operator** removes a property from an object.
+
+### Syntax
+`delete expression` where expression should evaluate to a property reference, e.g.:
+
+```js
+delete object.property
+delete object['property']
+```
+
+### Parameters
+**object**  The name of an object, or an expression evaluating to an object.
+
+ **property**   The property to delete.
+
+### Return value
+Throws in [strict](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode) mode if the property is an own non-configurable property (returns false in non-strict). Returns true in all other cases.
+
+[Read more](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete)
diff --git a/Challenge-Delete-your-jQuery-Functions.md b/Challenge-Delete-your-jQuery-Functions.md
new file mode 100644
index 0000000..97979c1
--- /dev/null
+++ b/Challenge-Delete-your-jQuery-Functions.md
@@ -0,0 +1,2 @@
+# Delete your jQuery Functions
+To delete the functions it is just as any other piece of code that you want to remove, select it and delete with the keyboard.
diff --git a/Challenge-Disable-an-Element-Using-jQuery.md b/Challenge-Disable-an-Element-Using-jQuery.md
new file mode 100644
index 0000000..9bade9b
--- /dev/null
+++ b/Challenge-Disable-an-Element-Using-jQuery.md
@@ -0,0 +1,8 @@
+# Disable an Element Using jQuery
+You can also change the non-CSS properties of HTML elements with jQuery. For example, you can disable buttons.
+
+When you disable a button, it will become grayed-out and can no longer be clicked.
+
+jQuery has a function called `.prop()` that allows you to adjust the properties of elements.
+
+Here's how you would disable all buttons: `$('#button').prop('disabled', true);`
diff --git a/Challenge-Ditch-Custom-CSS-for-Bootstrap.md b/Challenge-Ditch-Custom-CSS-for-Bootstrap.md
new file mode 100644
index 0000000..87ca2d0
--- /dev/null
+++ b/Challenge-Ditch-Custom-CSS-for-Bootstrap.md
@@ -0,0 +1,4 @@
+# Ditch Custom CSS for Bootstrap
+We can clean up our code and make our Cat Photo App look more conventional by using Bootstrap's built-in styles instead of the custom styles we created earlier.
+
+All you need to know is the built in [classes](http://getbootstrap.com/css/).
diff --git a/Challenge-Divide-One-Number-by-Another-with-JavaScript.md b/Challenge-Divide-One-Number-by-Another-with-JavaScript.md
new file mode 100644
index 0000000..cd04527
--- /dev/null
+++ b/Challenge-Divide-One-Number-by-Another-with-JavaScript.md
@@ -0,0 +1,2 @@
+# Divide One Number by Another with JavaScript
+JavaScript uses use the `/` symbol for division. `var quotient = 66 / 33;`
diff --git a/Challenge-Escape-Sequences-in-Strings.md b/Challenge-Escape-Sequences-in-Strings.md
new file mode 100644
index 0000000..66748a5
--- /dev/null
+++ b/Challenge-Escape-Sequences-in-Strings.md
@@ -0,0 +1,15 @@
+# Escape Sequences in Strings
+Quotes are not the only characters that can be escaped inside a string. Here is a table of common escape sequences:
+
+**Code** | **Output**
+-------- | ---------------
+\'       | single quote
+\"       | double quote
+\\       | backslash
+\n       | new line
+\r       | carriage return
+\t       | tab
+\b       | backspace
+\f       | form feed
+
+_Note that the backslash itself must be escaped in order to display as a backslash._
diff --git a/Challenge-Escaping-Literal-Quotes-in-Strings.md b/Challenge-Escaping-Literal-Quotes-in-Strings.md
new file mode 100644
index 0000000..7234376
--- /dev/null
+++ b/Challenge-Escaping-Literal-Quotes-in-Strings.md
@@ -0,0 +1,8 @@
+# Escaping Literal Quotes in Strings
+In JavaScript, you can escape a quote from considering it as an end of string quote by placing a backslash `\` in front of the quote.
+
+`"Alan said, \"Peter is learning JavaScript\"."`
+
+This signals JavaScript that the following quote is not the end of the string, but should instead appear inside the string.
+
+However another option is to alternate quotation marks if possible.  `'Alan said, "Peter is learning JavaScript"'` this would also work.
diff --git a/Challenge-Fill-in-the-Blank-with-Placeholder-Text.md b/Challenge-Fill-in-the-Blank-with-Placeholder-Text.md
new file mode 100644
index 0000000..b3f335c
--- /dev/null
+++ b/Challenge-Fill-in-the-Blank-with-Placeholder-Text.md
@@ -0,0 +1,11 @@
+Web developers traditionally use **lorem ipsum** text as placeholder text. It's called lorem ipsum text because those are the first two words of a famous passage by Cicero of Ancient Rome.
+
+**lorem ipsum** text has been used as placeholder text by typesetters since the 16th century, and this tradition continues on the web.
+
+```
+<h1>Hello World</h1>
+
+<h2>CatPhotoApp</h2>
+
+<p>Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.</p>
+```
\ No newline at end of file
diff --git a/Challenge-Filter-Arrays-with-filter.md b/Challenge-Filter-Arrays-with-filter.md
new file mode 100644
index 0000000..cd1807a
--- /dev/null
+++ b/Challenge-Filter-Arrays-with-filter.md
@@ -0,0 +1,9 @@
+Filter is a useful method that can filter out values that don't match a certain criteria.
+
+```
+var array = [1,2,3,4,5,6,7,8,9,10];
+  // Only change code below this line.
+array = array.filter(function(val) {
+  return val <= 5;
+});
+```
\ No newline at end of file
diff --git a/Challenge-Find-Numbers-with-Regular-Expressions.md b/Challenge-Find-Numbers-with-Regular-Expressions.md
new file mode 100644
index 0000000..600eb52
--- /dev/null
+++ b/Challenge-Find-Numbers-with-Regular-Expressions.md
@@ -0,0 +1,6 @@
+# Find Numbers with Regular Expressions
+We can use special selectors in Regular Expressions to select a particular type of value.
+
+One such selector is the digit selector `\d` which is used to grab the numbers in a string.
+
+It is used like this: `/\d+/g`.
diff --git a/Challenge-Find-White-Space-with-Regular-Expressions.md b/Challenge-Find-White-Space-with-Regular-Expressions.md
new file mode 100644
index 0000000..02ff6af
--- /dev/null
+++ b/Challenge-Find-White-Space-with-Regular-Expressions.md
@@ -0,0 +1,6 @@
+# Find White Space with Regular Expressions
+We can also use selectors like`\s` to find spaces in a string.
+
+It is used like this:
+
+`/\s+/g`
diff --git a/Challenge-Find-the-Length-of-a-String.md b/Challenge-Find-the-Length-of-a-String.md
new file mode 100644
index 0000000..8a9c91d
--- /dev/null
+++ b/Challenge-Find-the-Length-of-a-String.md
@@ -0,0 +1,6 @@
+# Find the Length of a String
+You can find the _length_ of a String value by writing `.length` after the string variable or string literal.
+
+`"Alan Peter".length; // 10`
+
+For example, if we created a variable `var firstName = "Charles"`, we could find out how long the string "Charles" is by using the `firstName.length` property.
diff --git a/Challenge-Finding-a-Remainder-in-Javascript.md b/Challenge-Finding-a-Remainder-in-Javascript.md
new file mode 100644
index 0000000..448d310
--- /dev/null
+++ b/Challenge-Finding-a-Remainder-in-Javascript.md
@@ -0,0 +1,21 @@
+# Finding a Remainder in Javascript
+The _remainder operator_ `%` gives the remainder of the division of two numbers.
+
+## Example
+
+```
+5 % 2 = 1 because
+Math.floor(5 / 2) = 2 (Quotient)
+2 * 2 = 4
+5 - 4 = 1 (Remainder)
+```
+
+## Usage
+In mathematics, a number can be checked even or odd by checking the remainder of the division of the number by 2.
+
+```
+17 % 2 = 1 (17 is Odd)
+48 % 2 = 0 (48 is Even)
+```
+
+**Note** Do not confuse it with _modulus_ `%` does not work well with negative numbers.
diff --git a/Challenge-Generate-Random-Fractions-with-JavaScript.md b/Challenge-Generate-Random-Fractions-with-JavaScript.md
new file mode 100644
index 0000000..a59e6c9
--- /dev/null
+++ b/Challenge-Generate-Random-Fractions-with-JavaScript.md
@@ -0,0 +1,2 @@
+# Generate Random Fractions with JavaScript
+JavaScript has a `Math.random()` function that generates a random decimal number.
diff --git a/Challenge-Generate-Random-Whole-Numbers-with-JavaScript.md b/Challenge-Generate-Random-Whole-Numbers-with-JavaScript.md
new file mode 100644
index 0000000..06728b3
--- /dev/null
+++ b/Challenge-Generate-Random-Whole-Numbers-with-JavaScript.md
@@ -0,0 +1,5 @@
+It's great that we can create random decimal numbers, but it's even more useful if we lot more useful to generate a random whole number.
+
+To achieve this we can multiply the random number by ten and use the `Math.floor()` to convert the decimal number to a whole number
+
+`Math.floor(Math.random()*10)`
\ No newline at end of file
diff --git a/Challenge-Generate-Random-Whole-Numbers-within-a-Range.md b/Challenge-Generate-Random-Whole-Numbers-within-a-Range.md
new file mode 100644
index 0000000..b338c00
--- /dev/null
+++ b/Challenge-Generate-Random-Whole-Numbers-within-a-Range.md
@@ -0,0 +1,55 @@
+# Generate Random Whole Numbers within a Range
+> We can use a certain mathematical expression to get a random number between two numbers.
+
+`Math.floor(Math.random() * (max - min + 1)) + min`
+
+**See Also:** :scroll: [**Explanation**](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Waypoint-Generate-Random-Whole-Numbers-within-a-Range#explanation) | [Explanation in SO](https://stackoverflow.com/questions/1527803/generating-random-numbers-in-javascript-in-a-specific-range/1527820#1527820)
+
+## Explanation
+> `Math.random()` creates a floating point number between `0` (inclusive) and `1` (exclusive)
+
+**Q:** Create a random **whole** number between `2` (inclusive, min) and `6` (inclusive, max) i.e. create a random *whole* number between `min` (*inclusive*) and max (*inclusive*)
+
+**A:** `Math.floor(Math.random() * (6 - 2 + 1)) + 2`
+
+Let's write `Math.random() * max` which creates a floating point number between `0` (inclusive) and `max` (*exclusive*).
+
+E.g. `Math.random() * 6` generates a random floating point number between `0` (inclusive) and `6` (*exclusive*).
+
+----
+
+But we need to generate a whole number between `0` (*inclusive*) and `max` (*inclusive*) first. So we do a trick :wink:. 
+
+What if we create a number between `0` and `max + 1`. That way, we also include the `max` number. And then apply the `Math.floor` method on the result to get a whole number between **`0`** (*inclusive*, min) and `max` (*inclusive*).
+
+We can write it as `Math.floor(Math.random() * (max + 1))`. 
+
+E.g. `Math.floor(Math.random() * (6 + 1))` generates a random floating point number between **`0`** (*inclusive*, min) and **`6`** (*inclusive*, max).
+
+**`0 1 2 3 4 5 6`**
+
+> The `Math.random() * (6 + 1)` part generates a floating point number between `0` (*inclusive*) and `7` (*exclusive*).
+
+**`0..1..2..3..4..5..6..`**
+
+----
+
+But that doesn't solve our given question yet :disappointed:. We need to generate a random whole number between **`min`** (*inclusive*) and `max` (*inclusive*). So we need another trick :wink:. 
+
+What if we write `Math.floor(Math.random() * ((max + 1) - min))` that will generate a whole number between `0` and `(max + 1) - min`.
+
+E.g. `Math.floor(Math.random() * ((6 + 1) - 2))` **=** `Math.floor(Math.random() * 5)` that will generate a whole number between `0` (inclusive) and `4` (inclusive).
+
+**`0 1 2 3 4`**
+
+----
+
+But still the question is unsolved :disappointed:. We need the random number between `min` (**inclusive**) and `max` (**inclusive**).
+
+So we simply write `Math.floor(Math.random() * ((max + 1) - min)) + min` :stuck_out_tongue_winking_eye:. 
+
+E.g. `Math.floor(Math.random() * ((6 + 1) - 2)) + 2` **=** `Math.floor(Math.random() * 5) + 2`
+
+**`2 3 4 5 6`**
+
+**Now this answers our given question. `Math.floor(Math.random() * (max - min + 1) + min` correctly generates a random number between `min` (*inclusive*) and `max` (*inclusive*) i.e. it generates a random whole number between `2` (inclusive) and `6` (inclusive).** :smiley:
\ No newline at end of file
diff --git a/Challenge-Get-Geo-location-Data.md b/Challenge-Get-Geo-location-Data.md
new file mode 100644
index 0000000..01313cb
--- /dev/null
+++ b/Challenge-Get-Geo-location-Data.md
@@ -0,0 +1,22 @@
+## Get Geo-location Data
+Every browser has a built in navigator that can give us this information.
+
+The navigator will get our user's current longitude and latitude.
+
+You will see a prompt to allow or block this site from knowing your current location. The challenge can be completed either way, as long as the code is correct.
+
+By selecting allow you will see the text on the output phone change to your latitude and longitude
+
+Here's some code that does this:
+
+```js
+if (navigator.geolocation) {
+
+  navigator.geolocation.getCurrentPosition(function(position) {
+
+    $("#data").html("latitude: " + position.coords.latitude + "<br>longitude: " + position.coords.longitude);
+
+  });
+
+}
+```
diff --git a/Challenge-Get-JSON-with-the-jQuery-getJSON-Method.md b/Challenge-Get-JSON-with-the-jQuery-getJSON-Method.md
new file mode 100644
index 0000000..ad63e0a
--- /dev/null
+++ b/Challenge-Get-JSON-with-the-jQuery-getJSON-Method.md
@@ -0,0 +1,16 @@
+# Get JSON with the jQuery getJSON Method
+Application Programming Interfaces - are tools that computers use to communicate with one another.
+
+Most web APIs transfer data in a format called JSON. JSON stands for JavaScript Object Notation. JSON is nothing more than object properties and their current values, sandwiched between a `{` and a `}`.
+
+These properties and their values are often referred to as "key-value pairs".
+
+Here is a sample of what it looks like.
+
+```js
+$.getJSON("/json/cats.json", function(json) {
+
+   $(".message").html(JSON.stringify(json));
+
+ });
+```
diff --git a/Challenge-Give-Each-Element-a-Unique-ID.md b/Challenge-Give-Each-Element-a-Unique-ID.md
new file mode 100644
index 0000000..0f7d860
--- /dev/null
+++ b/Challenge-Give-Each-Element-a-Unique-ID.md
@@ -0,0 +1,2 @@
+# Give Each Element a Unique ID
+We will also want to be able to use jQuery to target each button by its unique id. So we add an unique id to each button.
diff --git a/Challenge-Give-a-Background-Color-to-a-Div-Element.md b/Challenge-Give-a-Background-Color-to-a-Div-Element.md
new file mode 100644
index 0000000..44ff8d4
--- /dev/null
+++ b/Challenge-Give-a-Background-Color-to-a-Div-Element.md
@@ -0,0 +1,3 @@
+You can set an element's background color with the `background-color` attribute.
+
+For example, if you wanted an element's background color to be green, you'd use `.green-background { background-color: green; }` within your `style` element.
\ No newline at end of file
diff --git a/Challenge-Give-your-JavaScript-Slot-Machine-some-stylish-images.md b/Challenge-Give-your-JavaScript-Slot-Machine-some-stylish-images.md
new file mode 100644
index 0000000..019eadd
--- /dev/null
+++ b/Challenge-Give-your-JavaScript-Slot-Machine-some-stylish-images.md
@@ -0,0 +1,6 @@
+# Give your JavaScript Slot Machine some stylish images
+We've already set up the images for you in an array called images. We can use different indexes to grab each of these.
+
+Here's how we would set the first slot to show a different image depending on which number its random number generates:
+
+`$($('.slot')[0]).html('<img src = "' + images[slotOne-1] + '">');`
diff --git a/Challenge-Global-Scope-And-Functions.md b/Challenge-Global-Scope-And-Functions.md
new file mode 100644
index 0000000..144a791
--- /dev/null
+++ b/Challenge-Global-Scope-And-Functions.md
@@ -0,0 +1,5 @@
+#Waypoint: Global Scope and Functions
+
+In JavaScript, `scope` refers to the visibility of variables. Variables which are defined outside of a function block have `Global` scope. This means, they can be seen everywhere in your JavaScript code.
+
+Variables which are used without the `var` keyword are automatically created in the `global` scope. This can create unintended consequences elsewhere in your code or when running a function again. You should always declare your variables with `var`.
\ No newline at end of file
diff --git a/Challenge-Global-Vs-Local-Scope-In-Functions.md b/Challenge-Global-Vs-Local-Scope-In-Functions.md
new file mode 100644
index 0000000..090b01d
--- /dev/null
+++ b/Challenge-Global-Vs-Local-Scope-In-Functions.md
@@ -0,0 +1,15 @@
+#Waypoint: Global vs Local Scope in Functions
+
+It is possible to have both `local` and `global` variables with the same name. When you do this, the local variable takes precedence over the `global` variable.
+
+In this example:
+
+```js
+var someVar = "Hat";
+function myFun() {
+  var someVar = "Head";
+  return someVar;
+}
+```
+
+The function `myFun` will return `"Head"` because the `local` version of the variable is present.
\ No newline at end of file
diff --git a/Challenge-Headline-with-the-h2-Element.md b/Challenge-Headline-with-the-h2-Element.md
new file mode 100644
index 0000000..2725593
--- /dev/null
+++ b/Challenge-Headline-with-the-h2-Element.md
@@ -0,0 +1,6 @@
+You can create different levels of Heading elements by using **h1, h2, h3, h4, h5, h6** which will result on different sizes.
+
+```
+<h1>Hello World</h1>
+<h2>CatPhotoApp</h2>
+```
\ No newline at end of file
diff --git a/Challenge-House-our-page-within-a-Bootstrap-Container-Fluid-Div.md b/Challenge-House-our-page-within-a-Bootstrap-Container-Fluid-Div.md
new file mode 100644
index 0000000..7aac302
--- /dev/null
+++ b/Challenge-House-our-page-within-a-Bootstrap-Container-Fluid-Div.md
@@ -0,0 +1,8 @@
+# House our page within a Bootstrap Container Fluid Div
+To make the content responsive, we use the `container-fluid` class.
+
+```
+<div class="container-fluid">
+<h3 class="text-primary text-center">jQuery Playground</h3>
+</div>
+```
diff --git a/Challenge-Import-a-Google-Font.md b/Challenge-Import-a-Google-Font.md
new file mode 100644
index 0000000..7c720d1
--- /dev/null
+++ b/Challenge-Import-a-Google-Font.md
@@ -0,0 +1,3 @@
+To import a font from Google or any other site, this is the format that you should follow: `<link href="http://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">`
+
+Once imported, it can then be used in the font-family property
\ No newline at end of file
diff --git a/Challenge-Increment-a-Number-with-Javascript.md b/Challenge-Increment-a-Number-with-Javascript.md
new file mode 100644
index 0000000..3783c7a
--- /dev/null
+++ b/Challenge-Increment-a-Number-with-Javascript.md
@@ -0,0 +1,10 @@
+# Increment a Number with Javascript
+You can easily increment or add `1` to a variable with the `++` operator.
+
+`i++;`
+
+is the equivalent of
+
+`i = i + 1;`
+
+**Note** The entire line becomes `i++;`, eliminating the need for the equal sign.
diff --git a/Challenge-Inform-with-the-Paragraph-Element.md b/Challenge-Inform-with-the-Paragraph-Element.md
new file mode 100644
index 0000000..b5b8b04
--- /dev/null
+++ b/Challenge-Inform-with-the-Paragraph-Element.md
@@ -0,0 +1,9 @@
+`p` elements are the preferred element for normal-sized paragraph text on websites. P is short for "paragraph".
+
+You can create a p element like so: `<p>I'm a p tag!</p>`.
+
+```
+<h1>Hello World</h1>
+<h2>CatPhotoApp</h2>
+<p>Hello Paragraph</p>
+```
\ No newline at end of file
diff --git a/Challenge-Inherit-Styles-from-the-Body-Element.md b/Challenge-Inherit-Styles-from-the-Body-Element.md
new file mode 100644
index 0000000..b5e2142
--- /dev/null
+++ b/Challenge-Inherit-Styles-from-the-Body-Element.md
@@ -0,0 +1,13 @@
+The `body` element can be styled just like any other.
+
+```
+<style>
+  body {
+    background-color: black;
+    color: green;
+    font-family: Monospace
+  }
+
+</style>
+<h1>Hello World</h1>
+```
\ No newline at end of file
diff --git a/Challenge-Initializing-Variables-with-the-Equal-Operator.md b/Challenge-Initializing-Variables-with-the-Equal-Operator.md
new file mode 100644
index 0000000..86fcd5f
--- /dev/null
+++ b/Challenge-Initializing-Variables-with-the-Equal-Operator.md
@@ -0,0 +1,7 @@
+# Initializing Variables with the Equal Operator
+In most cases you will see a variable being declared and given an initial value all at the same time. This allows you to use it right away with a proper value.
+
+`var myVar = 0;`
+
+Creates a new variable called `myVar` and assigns it an initial value of `0
+`.
diff --git a/Challenge-Introducing-Else-If-Statements.md b/Challenge-Introducing-Else-If-Statements.md
new file mode 100644
index 0000000..19b0071
--- /dev/null
+++ b/Challenge-Introducing-Else-If-Statements.md
@@ -0,0 +1,13 @@
+#Waypoint: Introducing Else If Statements
+
+If you have multiple conditions that need to be addressed, you can chain `if` statements together with `else if` statements.
+
+```js
+if (num > 15) {
+  return "Bigger than 15";
+} else if (num < 5) {
+  return "Smaller than 5";
+} else {
+  return "Between 5 and 15";
+}
+```
diff --git a/Challenge-Introducing-Else-Statements.md b/Challenge-Introducing-Else-Statements.md
new file mode 100644
index 0000000..aa7110f
--- /dev/null
+++ b/Challenge-Introducing-Else-Statements.md
@@ -0,0 +1,11 @@
+#Waypoint: Introducing Else Statements
+
+When a condition for an `if` statement is true, the block of code following it is executed. What about when that condition is false? Normally nothing would happen. With an `else` statement, an alternate block of code can be executed.
+
+```js
+if (num > 10) {
+  return "Bigger than 10";
+} else {
+  return "10 or Less";
+}
+```
diff --git a/Challenge-Introducing-Javascript-Object-Notation-Json.md b/Challenge-Introducing-Javascript-Object-Notation-Json.md
new file mode 100644
index 0000000..0fe1e79
--- /dev/null
+++ b/Challenge-Introducing-Javascript-Object-Notation-Json.md
@@ -0,0 +1,22 @@
+#Waypoint: Introducing JavaScript Object Notation JSON
+
+JavaScript Object Notation or `JSON` uses the format of JavaScript Objects to store data. JSON is flexible because it allows for `Data Structures` with arbitrary combinations of `strings`, `numbers`, `booleans`, `arrays`, and `objects`.
+
+Here is an example of a JSON object:
+
+```js
+var ourMusic = [
+  {
+    "artist": "Daft Punk",
+    "title": "Homework",
+    "release_year": 1997,
+    "formats": [ 
+      "CD", 
+      "Cassette", 
+      "LP" ],
+    "gold": true
+  }
+];
+```
+
+This is an array of objects and the object has various pieces of `metadata` about an album. It also has a nested `formats` array. Additional album records could be added to the top level array.
\ No newline at end of file
diff --git a/Challenge-Invert-Regular-Expression-Matches-with-JavaScript.md b/Challenge-Invert-Regular-Expression-Matches-with-JavaScript.md
new file mode 100644
index 0000000..bc66487
--- /dev/null
+++ b/Challenge-Invert-Regular-Expression-Matches-with-JavaScript.md
@@ -0,0 +1,4 @@
+# Invert Regular Expression Matches with JavaScript
+Use`/\S/gi`; to match everything that isn't a space in the string.
+
+You can invert any match by using the uppercase version of the selector `\s` versus `\S` for example.
diff --git a/Challenge-Iterate-Odd-Numbers-With-a-For-Loop.md b/Challenge-Iterate-Odd-Numbers-With-a-For-Loop.md
new file mode 100644
index 0000000..11460f0
--- /dev/null
+++ b/Challenge-Iterate-Odd-Numbers-With-a-For-Loop.md
@@ -0,0 +1,16 @@
+# Iterate Odd Numbers With a For Loop
+For loops don't have to iterate one at a time. By changing our `final-expression`, we can count by even numbers.
+
+We'll start at `i = 0` and loop while `i < 10`. We'll increment `i` by 2 each loop with `i += 2`.
+
+```js
+var ourArray = [];
+
+for(var i = 0; i < 10; i += 2) {
+
+  ourArray.push(i);
+
+}
+```
+
+ourArray will now contain `[0,2,4,6,8]`
diff --git a/Challenge-Iterate-Through-An-Array-With-A-For-Loop.md b/Challenge-Iterate-Through-An-Array-With-A-For-Loop.md
new file mode 100644
index 0000000..0b9b63a
--- /dev/null
+++ b/Challenge-Iterate-Through-An-Array-With-A-For-Loop.md
@@ -0,0 +1,12 @@
+#Waypoint: Iterate Through an Array with a For Loop
+
+A common task in Javascript is to iterate through the contents of an array. One way to do that is with a `for` loop. This code will output each element of the array `arr` to the console:
+
+```js
+    var arr = [10,9,8,7,6];
+    for (var i=0; i < arr.length; i++) {
+       console.log(arr[i]);
+    }
+```
+
+Remember that Arrays have zero-based numbering, which means the last index of the array is length - 1. Our `condition` for this loop is i < arr.length, which stops when i is at length - 1.
diff --git a/Challenge-Iterate-over-Arrays-with-map.md b/Challenge-Iterate-over-Arrays-with-map.md
new file mode 100644
index 0000000..d3ad86a
--- /dev/null
+++ b/Challenge-Iterate-over-Arrays-with-map.md
@@ -0,0 +1,10 @@
+Using *map* is the best way to iterate through an array or object. Map uses a function to pretty much do whatever you want it to do. It will pass each value to the callback function.
+
+```
+//Use map to add three to each value in the array
+var array = [1,2,3,4,5];
+
+array = array.map(function(val){
+  return val + 3;
+});
+```
\ No newline at end of file
diff --git a/Challenge-Iterate-with-JavaScript-For-Loops.md b/Challenge-Iterate-with-JavaScript-For-Loops.md
new file mode 100644
index 0000000..e6d1871
--- /dev/null
+++ b/Challenge-Iterate-with-JavaScript-For-Loops.md
@@ -0,0 +1,23 @@
+# Iterate with JavaScript For Loops
+The most common type of JavaScript loop is called a `for loop` because it runs `for` a specific number of times.
+
+```
+var ourArray = [];
+for(var i = 0; i < 5; i++) {
+  ourArray.push(i);
+}
+```
+
+ourArray will now contain [0,1,2,3,4]
+
+## More about for loops
+```
+for(var i = 0; i < 5; i++) {  // There are 3 parts here
+```
+There are three parts to for loop.  They are separated by semicolons.  
+
+1. The initialization: `var i = 0;` - This code runs only once at the start of the loop. It's usually used to declare the counter variable (with `var`) and initialize the counter (in this case it is set to 0).   
+
+2. The condition: `i < 5;` - The loop will run as long as this is `true`. That means that as soon as `i` is equal to 5, the loop will stop looping.  Note that the inside of the loop will never see `i` as 5 because it will stop before then.  If this condition is initially `false`, the loop will never execute.  
+
+3. The increment: `i++` - This code is run at the end of each loop. It's usually a simple increment (`++` operator), but can really be any mathematical transformation. It is used to move the counter (`i`) forward (or backwards, or whatever.
\ No newline at end of file
diff --git a/Challenge-Iterate-with-JavaScript-While-Loops.md b/Challenge-Iterate-with-JavaScript-While-Loops.md
new file mode 100644
index 0000000..c6fa265
--- /dev/null
+++ b/Challenge-Iterate-with-JavaScript-While-Loops.md
@@ -0,0 +1,11 @@
+# Iterate with JavaScript While Loops
+Another type of JavaScript loop is called a `while loop` because it runs `while` something is true, and stops once that something is no longer true.
+
+```
+var ourArray = [];
+var i = 0;
+while(i < 5) {
+  ourArray.push(i);
+  i++;
+}
+```
diff --git a/Challenge-Join-Strings-with-.join.md b/Challenge-Join-Strings-with-.join.md
new file mode 100644
index 0000000..78ed7cd
--- /dev/null
+++ b/Challenge-Join-Strings-with-.join.md
@@ -0,0 +1,3 @@
+We can use the `.join()` method to join each element in an array into a string separated by whatever delimiter you provide as an argument to the join operation.
+
+`var joinMe = joinMe.join(" ");`
\ No newline at end of file
diff --git a/Challenge-Label-Bootstrap-Buttons.md b/Challenge-Label-Bootstrap-Buttons.md
new file mode 100644
index 0000000..48e9597
--- /dev/null
+++ b/Challenge-Label-Bootstrap-Buttons.md
@@ -0,0 +1,2 @@
+# Label Bootstrap Buttons
+Just like we labeled our [wells](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Waypoint-Label-Bootstrap-Wells), we want to label our buttons.
diff --git a/Challenge-Label-Bootstrap-Wells.md b/Challenge-Label-Bootstrap-Wells.md
new file mode 100644
index 0000000..b18c91c
--- /dev/null
+++ b/Challenge-Label-Bootstrap-Wells.md
@@ -0,0 +1,2 @@
+# Label Bootstrap Wells
+You can add labels to the wells by using the headers `<h4>` above the well divs.
diff --git a/Challenge-Learn-how-Script-Tags-and-Document-Ready-Work.md b/Challenge-Learn-how-Script-Tags-and-Document-Ready-Work.md
new file mode 100644
index 0000000..397beaf
--- /dev/null
+++ b/Challenge-Learn-how-Script-Tags-and-Document-Ready-Work.md
@@ -0,0 +1,12 @@
+# Learn how Script Tags and Document Ready Work
+For some reason FCC likes to introduce `jQuery` before JavaScript itself.
+
+To add JS to your HTML, you need a `script` tag.  Your browser will run any JavaScript inside a script element, including jQuery.
+
+Inside your script element, add this code: `$(document).ready(function() {` to your script. Then close it on the following line (still inside your script element) with: `});`
+
+```
+<script> $(document).ready(function(){
+
+});</script>
+```
diff --git a/Challenge-Line-up-Form-Elements-Responsively-with-Bootstrap.md b/Challenge-Line-up-Form-Elements-Responsively-with-Bootstrap.md
new file mode 100644
index 0000000..3b7561b
--- /dev/null
+++ b/Challenge-Line-up-Form-Elements-Responsively-with-Bootstrap.md
@@ -0,0 +1,9 @@
+# Line up Form Elements Responsively with Bootstrap
+We line up the form elements the same way we do with others, using divs.
+
+```
+<div class="row">
+<div class="col-xs-7"><input type="text" class="form-control" placeholder="cat photo URL" required></div>
+<div class=col-xs-5><button type="submit" class="btn btn-primary"><i class="fa fa-paper-plane"></i> Submit</button></div>
+</div>
+```
diff --git a/Challenge-Link-to-External-Pages-with-Anchor-Elements.md b/Challenge-Link-to-External-Pages-with-Anchor-Elements.md
new file mode 100644
index 0000000..8f90a90
--- /dev/null
+++ b/Challenge-Link-to-External-Pages-with-Anchor-Elements.md
@@ -0,0 +1,3 @@
+`a` elements, also known as anchor elements, are used to link to content outside of the current page.
+
+Here's an example: `<p>Here's a <a href="http://freecodecamp.com"> link to Free Code Camp</a> for you to follow.</p>`.
\ No newline at end of file
diff --git a/Challenge-Local-Scope-And-Functions.md b/Challenge-Local-Scope-And-Functions.md
new file mode 100644
index 0000000..65a2056
--- /dev/null
+++ b/Challenge-Local-Scope-And-Functions.md
@@ -0,0 +1,16 @@
+#Waypoint: Local Scope and Functions
+
+Variables which are declared within a function, as well as the function parameters have local scope. That means, they are only visible within that function.
+
+Here is a function `myTest` with a local variable called `loc`.
+
+```js
+function myTest() {
+  var loc = "foo";
+  console.log(loc);
+}
+myTest(); // "foo"
+console.log(loc); // "undefined"
+```
+
+`loc` is not defined outside of the function.
\ No newline at end of file
diff --git a/Challenge-Make-Circular-Images-with-a-Border-Radius.md b/Challenge-Make-Circular-Images-with-a-Border-Radius.md
new file mode 100644
index 0000000..844da6c
--- /dev/null
+++ b/Challenge-Make-Circular-Images-with-a-Border-Radius.md
@@ -0,0 +1,10 @@
+You can also use percentage to `border-radius` to make things round.
+
+```
+.thick-green-border {
+  border-color: green;
+  border-width: 10px;
+  border-style: solid;
+  border-radius: 50%;
+}
+```
\ No newline at end of file
diff --git a/Challenge-Make-Dead-Links-using-the-Hash-Symbol.md b/Challenge-Make-Dead-Links-using-the-Hash-Symbol.md
new file mode 100644
index 0000000..47cda58
--- /dev/null
+++ b/Challenge-Make-Dead-Links-using-the-Hash-Symbol.md
@@ -0,0 +1,3 @@
+Replace your a element's `href` attribute with a `#`, also known as a hash symbol, to turn it into a dead link. Sometimes you want to add a elements to your website before you know where they will link.
+
+This is also handy when you're changing the behavior of a link using jQuery, which we'll learn about later.
\ No newline at end of file
diff --git a/Challenge-Make-Images-Mobile-Responsive.md b/Challenge-Make-Images-Mobile-Responsive.md
new file mode 100644
index 0000000..d087ef5
--- /dev/null
+++ b/Challenge-Make-Images-Mobile-Responsive.md
@@ -0,0 +1,2 @@
+# Make Images Mobile Responsive
+When using Bootstrap, if you want an image to be responsive, all you have to do is add the class `img-responsive` to it. `<img class="img-responsive" src="http://bit.ly/fcc-running-cats">`
diff --git a/Challenge-Make-Instances-of-Objects-with-a-Constructor-Function.md b/Challenge-Make-Instances-of-Objects-with-a-Constructor-Function.md
new file mode 100644
index 0000000..a75128c
--- /dev/null
+++ b/Challenge-Make-Instances-of-Objects-with-a-Constructor-Function.md
@@ -0,0 +1,15 @@
+A function that creates objects is called a _constructor_, my favorite way of creating objects when you have to create more than one of the same object. You can also edit the second object to add more properties if needed. This is called creating _instances_ of an object.
+
+Each new instance of this object inherits all the properties and methods of your original object.
+
+```
+var Car = function() {
+   this.wheels = 4;
+};
+
+// New instance of Car object.
+var myCar = new Car();
+
+//Add the property "engines" to myCar, and make it a number.
+myCar.engines = 1;
+```
\ No newline at end of file
diff --git a/Challenge-Make-Object-Properties-Private.md b/Challenge-Make-Object-Properties-Private.md
new file mode 100644
index 0000000..f467559
--- /dev/null
+++ b/Challenge-Make-Object-Properties-Private.md
@@ -0,0 +1,34 @@
+Objects have their own attributes, called _properties_, and their own functions, called _methods_.
+
+You can use the `this` keyword to reference _public properties and methods_ of the current objects. However, when You need to create private ones so they are not accessible from the outside of the object you just remove the keyword `this` from the object property or method declaration and declare it with `var` so that it is private outside its scope.
+
+```js
+var Bike = function() {
+  var speed = 100; // private
+  function addUnit(value) { // private
+    return value + "KM/H";
+  }
+
+  this.getSpeed = function () {  // public
+    return addUnit(speed);
+  };
+
+};
+```
+
+Another example:
+
+```js
+var Cake = function() {
+
+  var loot = 2;
+  // Getter to know how much loot you have
+  this.getLoot = function() {
+    return loot;
+  };
+
+  // Setter to change the ammount of loot
+  this.setLoot = function(num){
+    loot = num;
+  };
+  ```
diff --git a/Challenge-Make-Unique-Objects-by-Passing-Parameters-to-our-Constructor.md b/Challenge-Make-Unique-Objects-by-Passing-Parameters-to-our-Constructor.md
new file mode 100644
index 0000000..7d64aae
--- /dev/null
+++ b/Challenge-Make-Unique-Objects-by-Passing-Parameters-to-our-Constructor.md
@@ -0,0 +1,30 @@
+# Make Unique Objects by Passing Parameters to our Constructor
+When you have a constructor but don't want to keep creating the same object, all you have to do is add parameters to the constructor the following way:
+
+```js
+var Car = function(wheels, seats, engines) {
+
+  this.wheels = wheels;
+
+  this.seats = seats;
+
+  this.engines = engines;
+
+};
+```
+
+Now you can pass in arguments when you call the constructor. `var myCar = new Car(6, 3, 1);`
+
+This will result in:
+
+```js
+{
+
+  wheels: 6,
+
+  seats: 3,
+
+  engines: 1
+
+}
+```
diff --git a/Challenge-Manipulate-Arrays-With-pop().md b/Challenge-Manipulate-Arrays-With-pop().md
new file mode 100644
index 0000000..25bd07c
--- /dev/null
+++ b/Challenge-Manipulate-Arrays-With-pop().md
@@ -0,0 +1,6 @@
+# Manipulate Arrays With pop()
+Another way to change the data in an array is with the `.pop()` function.
+
+`.pop()` is used to "pop" a value off of the end of an array. We can retrieve this value by performing `pop()` in a variable declaration.
+
+Any type of variable can be "popped" off of an array.
diff --git a/Challenge-Manipulate-Arrays-With-push().md b/Challenge-Manipulate-Arrays-With-push().md
new file mode 100644
index 0000000..495e07a
--- /dev/null
+++ b/Challenge-Manipulate-Arrays-With-push().md
@@ -0,0 +1,4 @@
+# Manipulate Arrays With push()
+Not only can you `pop()` data off of the end of an array, you can also `push()` data onto the end of an array.
+
+`myArray.push(["dog", 3]);`
diff --git a/Challenge-Manipulate-Arrays-With-shift().md b/Challenge-Manipulate-Arrays-With-shift().md
new file mode 100644
index 0000000..8bdd6e2
--- /dev/null
+++ b/Challenge-Manipulate-Arrays-With-shift().md
@@ -0,0 +1,2 @@
+# Manipulate Arrays With shift()
+`shift()` removes the first element unlike `pop()` which removes the last.
diff --git a/Challenge-Manipulate-Arrays-With-unshift().md b/Challenge-Manipulate-Arrays-With-unshift().md
new file mode 100644
index 0000000..d62b9eb
--- /dev/null
+++ b/Challenge-Manipulate-Arrays-With-unshift().md
@@ -0,0 +1,2 @@
+# Manipulate Arrays With unshift()
+`myArray.unshift('Paul');` Basically you call `unshift` and pass what was deleted.
diff --git a/Challenge-Manipulate-JavaScript-Objects.md b/Challenge-Manipulate-JavaScript-Objects.md
new file mode 100644
index 0000000..4a398a3
--- /dev/null
+++ b/Challenge-Manipulate-JavaScript-Objects.md
@@ -0,0 +1,8 @@
+# Manipulate JavaScript Objects
+We can add properties to objects like this:
+
+`myObject.myProperty = "myValue";`
+
+We can also delete them like this:
+
+`delete(myObject.myProperty);`
diff --git a/Challenge-Modify-Array-Data-With-Indexes.md b/Challenge-Modify-Array-Data-With-Indexes.md
new file mode 100644
index 0000000..5c2786a
--- /dev/null
+++ b/Challenge-Modify-Array-Data-With-Indexes.md
@@ -0,0 +1,9 @@
+# Modify Array Data With Indexes
+We can also modify the data stored in arrays by using indexes.
+
+For example:
+
+```
+var ourArray = [3,2,1];
+ourArray[0] = 1; // equals [1,2,1]
+```
diff --git a/Challenge-Multiple-Identical-Options-In-Switch-Statements.md b/Challenge-Multiple-Identical-Options-In-Switch-Statements.md
new file mode 100644
index 0000000..2ecbfd1
--- /dev/null
+++ b/Challenge-Multiple-Identical-Options-In-Switch-Statements.md
@@ -0,0 +1,17 @@
+#Waypoint: Multiple Identical Options in Switch Statements
+
+If the `break` statement is ommitted from a `switch` statement's `case`, the following `case` statement(s) are executed until a `break` is encountered. If you have multiple inputs with the same output, you can represent them in a `switch` statement like this:
+
+```js
+switch(val) {
+  case 1:
+  case 2:
+  case 3:
+    result = "1, 2, or 3";
+    break;
+  case 4:
+    result = "4 alone";
+}
+```
+
+Cases for 1, 2, and 3 will all produce the same result.
\ No newline at end of file
diff --git a/Challenge-Multiply-Two-Numbers-with-JavaScript.md b/Challenge-Multiply-Two-Numbers-with-JavaScript.md
new file mode 100644
index 0000000..eebd6c0
--- /dev/null
+++ b/Challenge-Multiply-Two-Numbers-with-JavaScript.md
@@ -0,0 +1,4 @@
+# Multiply Two Numbers with JavaScript
+JavaScript uses use the `*` symbol for multiplication.
+
+`var product = 8 * 10;`
diff --git a/Challenge-Nest-Many-Elements-within-a-Single-Div-Element.md b/Challenge-Nest-Many-Elements-within-a-Single-Div-Element.md
new file mode 100644
index 0000000..009127b
--- /dev/null
+++ b/Challenge-Nest-Many-Elements-within-a-Single-Div-Element.md
@@ -0,0 +1,23 @@
+The `div` element, also known as a division element, is a general purpose container for other elements.
+
+The div element is probably the most commonly used HTML element of all. It's useful for passing the CSS of its own class declarations down to all the elements that it contains.
+
+Just like any other non-self-closing element, you can open a `div` element with `<div>` and close it on another line with `</div>`.
+
+```
+<div>
+ <p>Things cats love:</p>
+ <ul>
+   <li>cat nip</li>
+   <li>laser pointers</li>
+   <li>lasagna</li>
+ </ul>
+ <p>Top 3 things cats hate:</p>
+ <ol>
+   <li>flea treatment</li>
+   <li>thunder</li>
+   <li>other cats</li>
+ </ol>
+</div>
+>
+```
\ No newline at end of file
diff --git a/Challenge-Nest-an-Anchor-Element-within-a-Paragraph.md b/Challenge-Nest-an-Anchor-Element-within-a-Paragraph.md
new file mode 100644
index 0000000..cc4a7f9
--- /dev/null
+++ b/Challenge-Nest-an-Anchor-Element-within-a-Paragraph.md
@@ -0,0 +1 @@
+Nesting is simple, just add one element inside another: `<p> click here for <a href="http://www.catphotoapp.com">cat photos</a></p>`
\ No newline at end of file
diff --git a/Challenge-Nest-one-Array-within-Another-Array.md b/Challenge-Nest-one-Array-within-Another-Array.md
new file mode 100644
index 0000000..fc091a7
--- /dev/null
+++ b/Challenge-Nest-one-Array-within-Another-Array.md
@@ -0,0 +1,2 @@
+# Nest one Array within Another Array
+You can nest arrays within other arrays, like this:`[["Bulls", 43]]`.
diff --git a/Challenge-Nesting-For-Loops.md b/Challenge-Nesting-For-Loops.md
new file mode 100644
index 0000000..caeb0aa
--- /dev/null
+++ b/Challenge-Nesting-For-Loops.md
@@ -0,0 +1,16 @@
+#Waypoint: Nesting For Loops
+
+If you have a multi-dimensional array, you can use the same logic as the prior waypoint to loop through both the array and any sub-arrays. Here is an example:
+
+```js
+    var arr = [
+      [1,2], [3,4], [5,6]
+    ];
+    for (var i=0; i < arr.length; i++) {
+      for (var j=0; j < arr[i].length; j++) {
+        console.log(arr[i][j]);
+      }
+    }
+```
+
+This outputs each sub-element in `arr` one at a time. Note that for the inner loop, we are checking the `.length` of `arr[i]`, since `arr[i]` is itself an array.
\ No newline at end of file
diff --git a/Challenge-Override-All-Other-Styles-by-using-Important.md b/Challenge-Override-All-Other-Styles-by-using-Important.md
new file mode 100644
index 0000000..3067a58
--- /dev/null
+++ b/Challenge-Override-All-Other-Styles-by-using-Important.md
@@ -0,0 +1,3 @@
+In many situations, you will use CSS libraries. These may accidentally override your own CSS. So when you absolutely need to be sure that an element has specific CSS, you can use !important.
+
+An example of how to do this is: `color: red !important;` This will make sure that we use the wanted property regardless of other overrides.
\ No newline at end of file
diff --git a/Challenge-Override-Class-Declarations-by-Styling-ID-Attributes.md b/Challenge-Override-Class-Declarations-by-Styling-ID-Attributes.md
new file mode 100644
index 0000000..e7c7bb2
--- /dev/null
+++ b/Challenge-Override-Class-Declarations-by-Styling-ID-Attributes.md
@@ -0,0 +1,19 @@
+We can use `id` to override  styling too. `id` should have a higher priority than `class`, so its rules apply if a conflict occurs.
+
+```
+<style>
+  body {
+    background-color: black;
+    font-family: Monospace;
+    color: green;
+  }
+  .pink-text {
+    color: pink;
+  }
+  .blue-text {
+    color: blue;
+  }
+  #orange-text{color:orange;}
+</style>
+<h1 class="pink-text blue-text" id="orange-text">Hello World!</h1>
+```
\ No newline at end of file
diff --git a/Challenge-Override-Class-Declarations-with-Inline-Styles.md b/Challenge-Override-Class-Declarations-with-Inline-Styles.md
new file mode 100644
index 0000000..b88c43f
--- /dev/null
+++ b/Challenge-Override-Class-Declarations-with-Inline-Styles.md
@@ -0,0 +1 @@
+Remember, in line styles look like this: `<h1 style="color: green">` They will override everything else that was changing the text color of h1.
\ No newline at end of file
diff --git a/Challenge-Override-Styles-in-Subsequent-CSS.md b/Challenge-Override-Styles-in-Subsequent-CSS.md
new file mode 100644
index 0000000..9c01f34
--- /dev/null
+++ b/Challenge-Override-Styles-in-Subsequent-CSS.md
@@ -0,0 +1 @@
+Your classes will override the body's CSS, if we add a new class that changes the same property, the last one will be the one applied.
\ No newline at end of file
diff --git a/Challenge-Passing-Values-To-Functions-With-Arguments.md b/Challenge-Passing-Values-To-Functions-With-Arguments.md
new file mode 100644
index 0000000..b6099de
--- /dev/null
+++ b/Challenge-Passing-Values-To-Functions-With-Arguments.md
@@ -0,0 +1,17 @@
+#Waypoint: Passing Values to Functions with Arguments
+
+`Parameters` are variables that act as placeholders for the values that are to be input to a function when it is called. When a function is defined, it is typically defined along with one or more parameters. The actual values that are input (or "*passed*") into a function when it is called are known as `arguments`.
+
+Here is a function with two parameters, `param1` and `param2`:
+
+```js
+function testFun(param1, param2) {
+  console.log(param1, param2);
+}
+```
+
+Then we can call testFun:
+
+`testFun("Hello", "World");`
+
+We have passed two arguments, `"Hello"` and `"World"`. Inside the function, `param1` will equal "Hello" and `param2` will equal "World". Note that you could call `testFun` again with different arguments and the parameters would take on the value of the new arguments.
\ No newline at end of file
diff --git a/Challenge-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md b/Challenge-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md
new file mode 100644
index 0000000..d28dfc5
--- /dev/null
+++ b/Challenge-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md
@@ -0,0 +1,4 @@
+# Perform Arithmetic Operations on Decimals with JavaScript
+In JavaScript, you can perform calculations with decimal numbers, just like whole numbers.
+
+`var quotient = 4.4 / 2.0; // equals 2.2`
diff --git a/Challenge-Prefilter-JSON.md b/Challenge-Prefilter-JSON.md
new file mode 100644
index 0000000..4e24e36
--- /dev/null
+++ b/Challenge-Prefilter-JSON.md
@@ -0,0 +1,19 @@
+# Prefilter JSON
+The **filter()** method creates a new array with all elements that pass the test implemented by the provided function.
+
+So when you don't want to work with all the elements from the array then you can use filter.
+
+Let's filter out the cat who's "id" key has a value of 1.
+
+Here's the code to do this:
+
+```js
+
+json = json.filter(function(val) {
+
+  return(val.id !== 1);
+
+});
+```
+
+More about filter:
diff --git a/Challenge-Prioritize-One-Style-Over-Another.md b/Challenge-Prioritize-One-Style-Over-Another.md
new file mode 100644
index 0000000..e7999f5
--- /dev/null
+++ b/Challenge-Prioritize-One-Style-Over-Another.md
@@ -0,0 +1,15 @@
+Classes to individual elements take priority over general styles.
+
+```
+<style>
+  body {
+    background-color: black;
+    font-family: Monospace;
+    color: green;
+  }
+  .pink-text{color: pink;}
+</style>
+<h1 class="pink-text">Hello World!</h1>
+```
+
+This makes for a pink h1 instead of a green one.
\ No newline at end of file
diff --git a/Challenge-Quoting-Strings-with-Single-Quotes.md b/Challenge-Quoting-Strings-with-Single-Quotes.md
new file mode 100644
index 0000000..79237bc
--- /dev/null
+++ b/Challenge-Quoting-Strings-with-Single-Quotes.md
@@ -0,0 +1,8 @@
+# Quoting Strings with Single Quotes
+String values in JavaScript may be written with single or double quotes, so long as you start and end with the same type of quote. Unlike some languages, single and double quotes are functionally identical in Javascript.
+
+`"This string has \"double quotes\" in it"`
+
+The value in using one or the other has to do with the need to escape quotes of the same type. If you have a string with many double quotes, this can be difficult to read and write. Instead, use single quotes:
+
+`'This string has "double quotes" in it. And "probably" lots of them.'`
diff --git a/Challenge-Remove-Classes-from-an-element-with-jQuery.md b/Challenge-Remove-Classes-from-an-element-with-jQuery.md
new file mode 100644
index 0000000..8fa1eac
--- /dev/null
+++ b/Challenge-Remove-Classes-from-an-element-with-jQuery.md
@@ -0,0 +1,4 @@
+# Remove Classes from an element with jQuery
+The same way we can add classes using jQuery, we an also remove them with `removeClass()`.
+
+`$("button").removeClass("btn-default");`
diff --git a/Challenge-Remove-an-Element-Using-jQuery.md b/Challenge-Remove-an-Element-Using-jQuery.md
new file mode 100644
index 0000000..4493154
--- /dev/null
+++ b/Challenge-Remove-an-Element-Using-jQuery.md
@@ -0,0 +1,2 @@
+# Remove an Element Using jQuery
+jQuery has a function called `.remove()` that will remove an HTML element entirely. `$("#target4").remove();`
diff --git a/Challenge-Render-Images-from-Data-Sources.md b/Challenge-Render-Images-from-Data-Sources.md
new file mode 100644
index 0000000..c4219e1
--- /dev/null
+++ b/Challenge-Render-Images-from-Data-Sources.md
@@ -0,0 +1,3 @@
+# Render Images from Data Sources
+
+Obtaining image links from JSON objects has been explained already. However, how do you present that image as an actual image requires a bit of ingenuity, yet it is simple even if you don't figure it out yourself. You have to generate html using the variable to complete the link like this: `html += "<img src = '" + val.imageLink + "'>";`
diff --git a/Challenge-Replacing-If-Else-Chains-With-Switch.md b/Challenge-Replacing-If-Else-Chains-With-Switch.md
new file mode 100644
index 0000000..6f5c244
--- /dev/null
+++ b/Challenge-Replacing-If-Else-Chains-With-Switch.md
@@ -0,0 +1,28 @@
+#Waypoint: Replacing If Else Chains with Switch
+
+If you have many options to choose from, a `switch` statement can be easier to write than many chained `if/if` else statements. The following:
+
+```js
+if(val === 1) {
+  answer = "a";
+} else if(val === 2) {
+  answer = "b";
+} else {
+  answer = "c";
+}
+```
+
+can be replaced with:
+
+```js
+switch (val) {
+  case 1:
+    answer = "a";
+    break;
+  case 2:
+    answer = "b";
+    break;
+  default:
+    answer = "c";
+}
+```
\ No newline at end of file
diff --git a/Challenge-Responsively-Style-Checkboxes.md b/Challenge-Responsively-Style-Checkboxes.md
new file mode 100644
index 0000000..053a2cb
--- /dev/null
+++ b/Challenge-Responsively-Style-Checkboxes.md
@@ -0,0 +1,4 @@
+# Responsively Style Checkboxes
+You can use Bootstrap's `col-xs-*` classes on form elements, too! This way, our checkboxes will be evenly spread out across the page, regardless of how wide the screen resolution is.
+
+Nest all your checkboxes in a `<div class="row">` element. Then nest each of them in a `<div class="col-xs-4">` element.
diff --git a/Challenge-Responsively-Style-Radio-Buttons.md b/Challenge-Responsively-Style-Radio-Buttons.md
new file mode 100644
index 0000000..bb49c4d
--- /dev/null
+++ b/Challenge-Responsively-Style-Radio-Buttons.md
@@ -0,0 +1,18 @@
+# Responsively Style Radio Buttons
+You can use Bootstrap's `col-xs-*` classes on `form` elements. That will make radio buttons evenly spread out across the page regardless of how wide the screen might be.
+
+Nest all of your radio buttons within a `<div class="row">` element. Then nest each of them within a `<div class="col-xs-6">` element.
+
+```
+<form action="/submit-cat-photo">
+  <div class="row">
+    <div class="col-xs-6"><label><input type="radio" name="indoor-outdoor"> Indoor</label></div>
+    <div class="col-xs-6"><label><input type="radio" name="indoor-outdoor"> Outdoor</label></div>
+    <div class="col-xs-6"><label><input type="checkbox" name="personality"> Loving</label></div>
+    <div class="col-xs-6"><label><input type="checkbox" name="personality"> Lazy</label></div>
+    <div class="col-xs-6"><label><input type="checkbox" name="personality"> Crazy</label></div>
+  </div>
+  <input type="text" placeholder="cat photo URL" required>
+  <button type="submit">Submit</button>
+</form>
+```
diff --git a/Challenge-Return-A-Value-From-A-Function-With-Return.md b/Challenge-Return-A-Value-From-A-Function-With-Return.md
new file mode 100644
index 0000000..db022c3
--- /dev/null
+++ b/Challenge-Return-A-Value-From-A-Function-With-Return.md
@@ -0,0 +1,16 @@
+#Waypoint: Return a Value from a Function with Return
+
+We can pass values into a function with `arguments`. You can use a `return` statement to send a value back out of a function.
+
+##Example
+
+```js
+function plusThree(num) {
+  return num + 3;
+}
+var answer = plusThree(5); // 8
+```
+
+`plusThree` takes an `argument` for `num` and returns a value equal to `num + 3`.
+
+A `return` statement will also end the execution of it's parent function. Hence, any statements inside a function scope after a `return` statement will not be executed. In case of multiple `return` statements in a function, only the first one will get executed.
\ No newline at end of file
diff --git a/Challenge-Return-Early-Pattern-For-Functions.md b/Challenge-Return-Early-Pattern-For-Functions.md
new file mode 100644
index 0000000..9e22996
--- /dev/null
+++ b/Challenge-Return-Early-Pattern-For-Functions.md
@@ -0,0 +1,16 @@
+#Waypoint: Return Early Pattern for Functions
+
+When a `return` statement is reached, the execution of the current function stops and control returns to the calling location.
+
+##Example
+
+```js
+function myFun() {
+  console.log("Hello");
+  return "World";
+  console.log("byebye")
+}
+myFun();
+```
+
+The above outputs "Hello" to the console, returns "World", but `"byebye"` is never output, because the function exits at the `return` statement.
\ No newline at end of file
diff --git a/Challenge-Returning-Boolean-Values-From-Functions.md b/Challenge-Returning-Boolean-Values-From-Functions.md
new file mode 100644
index 0000000..6e4ad8c
--- /dev/null
+++ b/Challenge-Returning-Boolean-Values-From-Functions.md
@@ -0,0 +1,23 @@
+#Waypoint: Returning Boolean Values from Functions
+
+You may recall from Comparison with the Equality Operator that all comparison operators return a boolean `true` or `false` value.
+
+A common `anti-pattern` is to use an `if/else` statement to do a comparison and then return `true/false`:
+
+```js
+function isEqual(a,b) {
+  if(a === b) {
+    return true;
+  } else {
+    return false;
+  }
+}
+```
+
+Since `===` returns `true` or `false`, we can simply return the result of the comparison:
+
+```js
+function isEqual(a,b) {
+  return a === b;
+}
+```
diff --git a/Challenge-Reverse-Arrays-with-reverse.md b/Challenge-Reverse-Arrays-with-reverse.md
new file mode 100644
index 0000000..f105c37
--- /dev/null
+++ b/Challenge-Reverse-Arrays-with-reverse.md
@@ -0,0 +1,7 @@
+You can use the .reverse() function to reverse the contents of an array.
+
+```
+var array = [1,2,3,4,5,6,7];
+
+array = array.reverse();
+```
\ No newline at end of file
diff --git a/Challenge-Save-your-Code-Revisions-Forever-with-Git.md b/Challenge-Save-your-Code-Revisions-Forever-with-Git.md
new file mode 100644
index 0000000..730099f
--- /dev/null
+++ b/Challenge-Save-your-Code-Revisions-Forever-with-Git.md
@@ -0,0 +1,15 @@
+For the Git waypoints you just have to follow the instructions closely. From how to create your [c9](http://c9.io/) account to completing the tutorial.
+
+For that you will need `git-it` to go to the challenges, and `git-it verify` to check that you completed it correctly. For detailed instructions read them here: [http://jlord.us/git-it/index.html](http://jlord.us/git-it/index.html)
+
+After you learn how to use git, here are other resources to help you learn more about git:
+
+- [Creating a New Github Issue](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Creating-a-New-Github-Issue)
+- [Git Blame](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Git-Blame)
+- [Git Merge](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/git-merge)
+- [Git Rebase](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/git-rebase)
+- [Other Git Resources](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Git-Resources)
+- [Writing Great Git Commit Messages](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Writing-great-git-commit-message)
+- [Using GitHub Pages for your front end dev projects](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Using-Github-Pages-for-your-front-end-development-projects)
+- [Search your issue on GitHub](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Searching-for-Your-Issue-on-Github)
+- [How Issue Mods Work](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/How-GitHub-Issue-Moderators-AKA-Issue-Mods-Work)
diff --git a/Challenge-Say-Hello-to-HTML-Elements.md b/Challenge-Say-Hello-to-HTML-Elements.md
new file mode 100644
index 0000000..2b421b4
--- /dev/null
+++ b/Challenge-Say-Hello-to-HTML-Elements.md
@@ -0,0 +1,11 @@
+HTML elements are written with a starting tag, an ending tag, and the content in between:
+
+- `<tagname>content</tagname>`
+
+The HTML element is everything from the start tag to the end tag:
+
+- `<p>My first HTML paragraph.</p>`
+
+Opening tags look like this: `<h1>`, and closing tags look like this: `</h1>`  
+
+- Note that the only difference between opening tags and closing tags, is that closing tags have a slash after their opening angle bracket. The slash in the closing tag is very important because it indicates that the tag is the end of the element.
diff --git a/Challenge-Selecting-From-Many-Options-With-Switch-Statements.md b/Challenge-Selecting-From-Many-Options-With-Switch-Statements.md
new file mode 100644
index 0000000..6b965f9
--- /dev/null
+++ b/Challenge-Selecting-From-Many-Options-With-Switch-Statements.md
@@ -0,0 +1,22 @@
+#Waypoint: Selecting from many options with Switch Statements
+
+If you have many options to choose from, use a `switch` statement. A `switch` statement tests a value and can have many `case` statements which defines various possible values. Statements are executed from the first matched `case` value until a `break` is encountered.
+
+Here is a `pseudocode` example:
+
+```js
+switch (num) {
+  case value1:
+    statement1;
+    break;
+  case value2:
+    statement2;
+    break;
+...
+  case valueN:
+    statementN;
+    break;
+}
+```
+
+`case` values are tested with strict equality (`===`). The `break` tells JavaScript to stop executing statements. If the `break` is omitted, the next statement will be executed.
\ No newline at end of file
diff --git a/Challenge-Set-the-Font-Family-of-an-Element.md b/Challenge-Set-the-Font-Family-of-an-Element.md
new file mode 100644
index 0000000..bc2a0cf
--- /dev/null
+++ b/Challenge-Set-the-Font-Family-of-an-Element.md
@@ -0,0 +1,15 @@
+Font family is controlled by the `font-family` CSS attribute, like this `h1 {font-family: Sans-serif;}`
+
+It allows you to pick a font to display to the user.
+
+More font-family examples can be viewed at [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family)
+
+***Note***: Keep in mind that different computers and browsers will have different fonts enabled. 
+Commonly available fonts are called *Web Safe*
+
+```
+ p {
+    font-size: 16px;
+    font-family: Monospace;
+  }
+```
\ No newline at end of file
diff --git a/Challenge-Set-the-ID-of-an-Element.md b/Challenge-Set-the-ID-of-an-Element.md
new file mode 100644
index 0000000..3ad2d5f
--- /dev/null
+++ b/Challenge-Set-the-ID-of-an-Element.md
@@ -0,0 +1,7 @@
+In addition to classes, each HTML element can also have an `id` attribute.
+
+There are several benefits to using id attributes, and you'll learn more about them once you start using jQuery.
+
+`id` attributes should be unique. Browsers won't enforce this, but it is a widely agreed upon best practice. So please don't give more than one element the same id attribute.
+
+Here's an example of how you give your h2 element the id of cat-photo-app: <h2 id="cat-photo-app">
\ No newline at end of file
diff --git a/Challenge-Sift-through-Text-with-Regular-Expressions.md b/Challenge-Sift-through-Text-with-Regular-Expressions.md
new file mode 100644
index 0000000..59a47b3
--- /dev/null
+++ b/Challenge-Sift-through-Text-with-Regular-Expressions.md
@@ -0,0 +1,13 @@
+# Sift through Text with Regular Expressions
+`Regular expressions` are used to find certain words or patterns inside of strings.
+
+Regular expressions are usually surrounded by `/` symbols.
+
+For example, if we wanted to find the number of times the word the occurred in the string The dog chased the cat, we could use the following regular expression: `/the+/gi`
+
+Let's break this down a bit:
+
+the is the pattern we want to match.
+- `+` means we want to find one or more occurrences of this pattern.
+- `g` means that we want to search the entire string for this pattern.
+- `i` means that we want to ignore the case (uppercase or lowercase) when searching for the pattern.
diff --git a/Challenge-Size-your-Images.md b/Challenge-Size-your-Images.md
new file mode 100644
index 0000000..f7cf96b
--- /dev/null
+++ b/Challenge-Size-your-Images.md
@@ -0,0 +1,3 @@
+CSS has an attribute called `width` that controls an element's width. Just like with fonts, we'll use `px` (pixels) to specify the image's width.
+
+For example, if we wanted to create a CSS class called larger-image that gave HTML elements a width of 500 pixels, we'd use: `<style> .larger-image { width: 500px; } </style>`.
\ No newline at end of file
diff --git a/Challenge-Sort-Arrays-with-sort.md b/Challenge-Sort-Arrays-with-sort.md
new file mode 100644
index 0000000..423ada2
--- /dev/null
+++ b/Challenge-Sort-Arrays-with-sort.md
@@ -0,0 +1,8 @@
+You can use the method sort to easily sort the values in the array alphabetically or numerically
+
+```
+var array = [1,3,2];
+
+array = array.sort();
+```
+This will return `[1, 2, 3]`
\ No newline at end of file
diff --git a/Challenge-Specify-How-Fonts-Should-Degrade.md b/Challenge-Specify-How-Fonts-Should-Degrade.md
new file mode 100644
index 0000000..613c488
--- /dev/null
+++ b/Challenge-Specify-How-Fonts-Should-Degrade.md
@@ -0,0 +1,3 @@
+There are several default fonts that are available in all browsers. These include `Monospace`, `Serif` and `Sans-Serif`.
+
+For example, if you wanted an element to use the `Helvetica` font, but also degrade to the `Sans-Serif` font when `Helvetica` wasn't available, you could use this CSS style: `p { font-family: Helvetica, Sans-Serif; }`.
\ No newline at end of file
diff --git a/Challenge-Split-Strings-with-split.md b/Challenge-Split-Strings-with-split.md
new file mode 100644
index 0000000..f753180
--- /dev/null
+++ b/Challenge-Split-Strings-with-split.md
@@ -0,0 +1,5 @@
+You can use the `.split()` method to split a string into an array.
+
+split uses the argument you give to to split the string.
+
+`array = string.split(' ');`
\ No newline at end of file
diff --git a/Challenge-Split-your-Bootstrap-Row.md b/Challenge-Split-your-Bootstrap-Row.md
new file mode 100644
index 0000000..64c4fde
--- /dev/null
+++ b/Challenge-Split-your-Bootstrap-Row.md
@@ -0,0 +1,12 @@
+# Split your Bootstrap Row
+Create two `div` elements within your row, both with the class `col-xs-6`.
+
+```
+<div class="container-fluid">
+  <h3 class="text-primary text-center">jQuery Playground</h3>
+  <div class="row">
+    <div class="col-xs-6"> </div>
+    <div class="col-xs-6"></div>
+  </div>
+</div>
+```
diff --git a/Challenge-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md b/Challenge-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md
new file mode 100644
index 0000000..5389e03
--- /dev/null
+++ b/Challenge-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md
@@ -0,0 +1,6 @@
+# Store Multiple Values in one Variable using JavaScript Arrays
+With JavaScript array variables, we can store several pieces of data in one place.
+
+You start an array declaration with an opening bracket, end it with a closing bracket, and put a comma between each entry, like this: `var sandwich = ["peanut butter", "jelly", "bread"]`.
+
+`myArray = [2,'j'];`
diff --git a/Challenge-Storing-Values-with-the-Equal-Operator.md b/Challenge-Storing-Values-with-the-Equal-Operator.md
new file mode 100644
index 0000000..4373930
--- /dev/null
+++ b/Challenge-Storing-Values-with-the-Equal-Operator.md
@@ -0,0 +1,12 @@
+# Storing Values with the Equal Operator
+In Javascript, you can store a value in a variable with the assignment or equal (=) operator.
+
+`myVariable = 5;`
+
+Assignment always goes from right to left. Everything to the right of the = operator is resolved before the value is assigned to the variable to the left of the operator.
+
+```js
+myVar = 5;
+
+myNum = myVar;
+```
diff --git a/Challenge-Style-Multiple-Elements-with-a-CSS-Class.md b/Challenge-Style-Multiple-Elements-with-a-CSS-Class.md
new file mode 100644
index 0000000..359974f
--- /dev/null
+++ b/Challenge-Style-Multiple-Elements-with-a-CSS-Class.md
@@ -0,0 +1,15 @@
+You can attach classes to HTML elements by using `class="your-class-here"` within the relevant element's opening tag.
+
+CSS selectors require a period at the beginning like this: `.blue-text { color: blue; }`, but that class declaration in the HTML doesn't use a period, like this: `<h2 class="blue-text">CatPhotoApp<h2>`.
+
+```html
+<style>
+  .red-text {
+    color: red;
+  }
+</style>
+
+<h2 class="red-text">CatPhotoApp</h2>
+
+<p class="red-text">Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.</p>
+```
\ No newline at end of file
diff --git a/Challenge-Style-Text-Inputs-as-Form-Controls.md b/Challenge-Style-Text-Inputs-as-Form-Controls.md
new file mode 100644
index 0000000..682b330
--- /dev/null
+++ b/Challenge-Style-Text-Inputs-as-Form-Controls.md
@@ -0,0 +1,4 @@
+# Style Text Inputs as Form Controls
+You can add the `fa-paper-plane` Font Awesome icon by adding `<i class="fa fa-paper-plane"></i>` within your submit button element.
+
+`<button type="submit" class="btn btn-primary"><i class="fa fa-paper-plane">Submit</i>`
diff --git a/Challenge-Style-the-HTML-Body-Element.md b/Challenge-Style-the-HTML-Body-Element.md
new file mode 100644
index 0000000..fa51843
--- /dev/null
+++ b/Challenge-Style-the-HTML-Body-Element.md
@@ -0,0 +1 @@
+Every HTML page has the `body` element. and it is like the main page.
\ No newline at end of file
diff --git a/Challenge-Subtract-One-Number-from-Another-with-JavaScript.md b/Challenge-Subtract-One-Number-from-Another-with-JavaScript.md
new file mode 100644
index 0000000..f2b3028
--- /dev/null
+++ b/Challenge-Subtract-One-Number-from-Another-with-JavaScript.md
@@ -0,0 +1,4 @@
+# Subtract One Number from Another with JavaScript
+We can also subtract one number from another.
+
+JavaScript uses use the - symbol for subtraction. `var difference = 45 - 33;`
diff --git a/Challenge-Target-Elements-by-Class-Using-jQuery.md b/Challenge-Target-Elements-by-Class-Using-jQuery.md
new file mode 100644
index 0000000..b39cdd1
--- /dev/null
+++ b/Challenge-Target-Elements-by-Class-Using-jQuery.md
@@ -0,0 +1,4 @@
+# Target Elements by Class Using jQuery
+Just as we did before, we can also target elements by classes.
+
+`$(".well").addClass("animated shake");`
diff --git a/Challenge-Target-Elements-by-ID-Using-jQuery.md b/Challenge-Target-Elements-by-ID-Using-jQuery.md
new file mode 100644
index 0000000..f975d1c
--- /dev/null
+++ b/Challenge-Target-Elements-by-ID-Using-jQuery.md
@@ -0,0 +1,4 @@
+# Target Elements by ID Using jQuery
+You can also target elements by their id attributes. Note that, just like with CSS declarations, you type a # before the id's name.
+
+`$("#target3").addClass("animated fadeOut");`
diff --git a/Challenge-Target-Even-Numbered-Elements-Using-jQuery.md b/Challenge-Target-Even-Numbered-Elements-Using-jQuery.md
new file mode 100644
index 0000000..4b1011b
--- /dev/null
+++ b/Challenge-Target-Even-Numbered-Elements-Using-jQuery.md
@@ -0,0 +1,6 @@
+# Target Even Numbered Elements Using jQuery
+You can also target all the even-numbered elements.
+
+Here's how you would target all the `odd-numbered` elements with class target and give them classes: `$('.target:odd').addClass('animated shake');`
+
+This will shake all the even ones: `$('.target:even').addClass("shake");`
diff --git a/Challenge-Target-HTML-Elements-with-Selectors-Using-jQuery.md b/Challenge-Target-HTML-Elements-with-Selectors-Using-jQuery.md
new file mode 100644
index 0000000..ed74c8f
--- /dev/null
+++ b/Challenge-Target-HTML-Elements-with-Selectors-Using-jQuery.md
@@ -0,0 +1,14 @@
+# Target HTML Elements with Selectors Using jQuery
+After we have created our `document ready function` we can now have code that will run after the page loads. This will assure that your code does not run before the HTML is rendered to avoid bugs.
+
+jQuery often selects an HTML element with a selector, then does something to that element.
+
+The following code will make the buttons have a bouncy animation on page load.
+
+```
+<script>
+  $(document).ready(function() {
+    $("button").addClass("animated bounce");
+  });
+</script>
+```
diff --git a/Challenge-Target-a-Specific-Child-of-an-Element-Using-jQuery.md b/Challenge-Target-a-Specific-Child-of-an-Element-Using-jQuery.md
new file mode 100644
index 0000000..934979f
--- /dev/null
+++ b/Challenge-Target-a-Specific-Child-of-an-Element-Using-jQuery.md
@@ -0,0 +1,6 @@
+# Target a Specific Child of an Element Using jQuery
+jQuery uses CSS Selectors to target elements. `target:nth-child(n)` css selector allows you to select all the nth element with the target class or element type.
+
+Here's how you would give the third element in each well bounce: `$(".target:nth-child(3)").addClass("animated bounce");`
+
+`$(".btn:nth-child(2)").addClass("animated bounce");`
diff --git a/Challenge-Target-the-Children-of-an-Element-Using-jQuery.md b/Challenge-Target-the-Children-of-an-Element-Using-jQuery.md
new file mode 100644
index 0000000..c43059c
--- /dev/null
+++ b/Challenge-Target-the-Children-of-an-Element-Using-jQuery.md
@@ -0,0 +1,6 @@
+# Target the Children of an Element Using jQuery
+Many HTML elements have children elements from which they inherit properties.
+
+jQuery has a function called `children()` that allows you to access the children of whichever element you've selected.
+
+Here's an example of how you would use the `children()` function: `$("#left-well").children().css("color", "blue");`
diff --git a/Challenge-Target-the-Parent-of-an-Element-Using-jQuery.md b/Challenge-Target-the-Parent-of-an-Element-Using-jQuery.md
new file mode 100644
index 0000000..69730e4
--- /dev/null
+++ b/Challenge-Target-the-Parent-of-an-Element-Using-jQuery.md
@@ -0,0 +1,8 @@
+# Target the Parent of an Element Using jQuery
+Every HTML elements has a parent element from which it inherits properties.
+
+For example, your jQuery Playground `h3` element has the parent element of`<div class="container-fluid">`, which itself has the parent body.
+
+jQuery has a function called `parent()` that allows you to access the parent of whichever element you've selected.
+
+Here's an example of how you would use the `parent()` function: `$("#left-well").parent().css("background-color", "blue")`
diff --git a/Challenge-Target-the-same-element-with-multiple-jQuery-Selectors.md b/Challenge-Target-the-same-element-with-multiple-jQuery-Selectors.md
new file mode 100644
index 0000000..ef710f2
--- /dev/null
+++ b/Challenge-Target-the-same-element-with-multiple-jQuery-Selectors.md
@@ -0,0 +1,15 @@
+# Target the same element with multiple jQuery Selectors
+The multiple jQuery selectors are:
+1. By type: `$("button")`
+2. By class: `$(".btn")`
+3. By id: `$("#target1")`
+
+```
+<script>
+  $(document).ready(function() {
+    $("button").addClass("animated");
+    $(".btn").addClass("shake");
+    $("#target1").addClass("btn-primary");
+  });
+</script>
+```
diff --git a/Challenge-Taste-the-Bootstrap-Button-Color-Rainbow.md b/Challenge-Taste-the-Bootstrap-Button-Color-Rainbow.md
new file mode 100644
index 0000000..5da1e82
--- /dev/null
+++ b/Challenge-Taste-the-Bootstrap-Button-Color-Rainbow.md
@@ -0,0 +1,4 @@
+# Taste the Bootstrap Button Color Rainbow
+The `btn-primary` class is the main color you'll use in your app. It is useful for highlighting actions you want your user to take. Note that this button will still need the `btn` and `btn-block` classes.
+
+`<button class="btn btn-block btn-primary">Like</button>`
diff --git a/Challenge-Testing-Objects-For-Properties.md b/Challenge-Testing-Objects-For-Properties.md
new file mode 100644
index 0000000..6f1daf3
--- /dev/null
+++ b/Challenge-Testing-Objects-For-Properties.md
@@ -0,0 +1,14 @@
+#Waypoint: Testing Objects for Properties
+
+Sometimes it is useful to check if the property of a given object exists or not. We can use the .hasOwnProperty([propname]) method of objects to determine if that object has the given property name. .hasOwnProperty() returns true or false if the property is found or not.
+
+##Example
+
+```js
+var myObj = {
+  top: "hat",
+  bottom: "pants"
+};
+myObj.hasOwnProperty("top");    // true
+myObj.hasOwnProperty("middle"); 
+```
\ No newline at end of file
diff --git a/Challenge-Trigger-Click Events-with-jQuery.md b/Challenge-Trigger-Click Events-with-jQuery.md
new file mode 100644
index 0000000..2fe37bc
--- /dev/null
+++ b/Challenge-Trigger-Click Events-with-jQuery.md	
@@ -0,0 +1,14 @@
+# Trigger Click Events with jQuery
+APIs - or Application Programming Interfaces - are tools that computers use to communicate with one another.
+
+`$(document).ready()` This function makes it so all code inside of it only runs once our page loads.
+
+Inside that you can add any function or code, for this particular waypoint you need to add a click handler:
+
+```js
+$("#getMessage").on("click", function(){
+  //Custom code here
+});
+```
+
+This will create a function so when the element with id `getMessage` is clicked, the custom function will be run.
diff --git a/Challenge-Turn-an-Image-into-a-Link.md b/Challenge-Turn-an-Image-into-a-Link.md
new file mode 100644
index 0000000..8865eac
--- /dev/null
+++ b/Challenge-Turn-an-Image-into-a-Link.md
@@ -0,0 +1 @@
+Creating images that link to things is essential and one of the most used things in Web Dev. Nest your image within an `a` element. Here's an example: `<a href="#"><img src="http://bit.ly/fcc-running-cats"/></a>`.
\ No newline at end of file
diff --git a/Challenge-Uncomment-HTML.md b/Challenge-Uncomment-HTML.md
new file mode 100644
index 0000000..7a2fdc2
--- /dev/null
+++ b/Challenge-Uncomment-HTML.md
@@ -0,0 +1,8 @@
+Comments allow code to be ignored. In the HTML language, comments are done by wrapping the code you wish to ignore with <!-- and -->
+`<!-- This text would not show up as it is a comment -->`
+
+You can easily uncomment by just removing the comment elements.
+
+***Note:*** Be careful when uncommenting HTML to remove both the beginning and end portions of the comment!
+
+***Note:*** Comments might be done differently in other languages such as JavaScript, but the general concept of removing whatever marks a comment applies.
\ No newline at end of file
diff --git a/Challenge-Understand-Boolean-Values.md b/Challenge-Understand-Boolean-Values.md
new file mode 100644
index 0000000..d0495dd
--- /dev/null
+++ b/Challenge-Understand-Boolean-Values.md
@@ -0,0 +1,2 @@
+# Understand Boolean Values
+Booleans can only hold the value of either true or false. They are basically little on-off switches.
diff --git a/Challenge-Understand-String-Immutability.md b/Challenge-Understand-String-Immutability.md
new file mode 100644
index 0000000..fd54988
--- /dev/null
+++ b/Challenge-Understand-String-Immutability.md
@@ -0,0 +1,16 @@
+# Understand String Immutability
+In Javascript, String values are `immutable`, which means that they cannot be altered once created.
+
+## Example
+
+```js
+var myStr = "Bob";
+myStr[0] = "J";
+```
+
+Would not work, the only way would be:
+
+```js
+var myStr = "Bob";
+myStr = "Job";
+```
diff --git a/Challenge-Understanding-Case-Sensitivity-in-Variables.md b/Challenge-Understanding-Case-Sensitivity-in-Variables.md
new file mode 100644
index 0000000..69a3fbd
--- /dev/null
+++ b/Challenge-Understanding-Case-Sensitivity-in-Variables.md
@@ -0,0 +1,15 @@
+# Understanding Case Sensitivity in Variables
+In JavaScript all variables and function names are case sensitive. This means that capitalization matters.
+
+`MYVAR` is not the same as `MyVar` nor `myvar`. It is possible to have multiple distinct variables with the same name but different casing. It is strongly recommended that for the sake of clarity, you do not use this language feature.
+
+## Best Practice
+Write variable names in Javascript in `camelCase`. In `camelCase`, `multi-word` variable names have the first word in lowercase and the first letter of each subsequent word is capitalized.
+
+## Examples:
+
+```js
+var someVariable;
+var anotherVariableName;
+var thisVariableNameIsTooLong;
+```
diff --git a/Challenge-Understanding-Uninitialized-Variables.md b/Challenge-Understanding-Uninitialized-Variables.md
new file mode 100644
index 0000000..5d81a8a
--- /dev/null
+++ b/Challenge-Understanding-Uninitialized-Variables.md
@@ -0,0 +1,4 @@
+# Understanding Uninitialized Variables
+When JavaScript variables are declared, they have an initial value of `undefined`. If you do a mathematical operation on an undefined variable your result will be `NaN` which means "Not a Number". If you concatenate a string with an undefined variable, you will get a literal string of "undefined".
+
+Basically this means that before you do any operations with them you **must** assign an initial value at some point.
diff --git a/Challenge-Updating-Object-Properties.md b/Challenge-Updating-Object-Properties.md
new file mode 100644
index 0000000..f3fdb30
--- /dev/null
+++ b/Challenge-Updating-Object-Properties.md
@@ -0,0 +1,22 @@
+#Waypoint: Updating Object Properties
+
+After you've created a JavaScript object, you can update its properties at any time just like you would update any other variable. You can use either dot or bracket notation to update.
+
+For example, let's look at `ourDog`:
+
+```js
+var ourDog = {
+  "name": "Camper",
+  "legs": 4,
+  "tails": 1,
+  "friends": ["everything!"]
+};
+```
+
+Since he's a particularly happy dog, let's change his name to "Happy Camper". Here's how we update his object's name property:
+
+`ourDog.name = "Happy Camper";` or
+
+`ourDog["name"] = "Happy Camper";`
+
+Now when we evaluate `ourDog.name`, instead of getting "Camper", we'll get his new name, "Happy Camper".
\ No newline at end of file
diff --git a/Challenge-Use-Abbreviated-Hex-Code.md b/Challenge-Use-Abbreviated-Hex-Code.md
new file mode 100644
index 0000000..cf6d6f6
--- /dev/null
+++ b/Challenge-Use-Abbreviated-Hex-Code.md
@@ -0,0 +1,11 @@
+red, which is `#FF0000` in hex code, can be shortened to `#F00`. That is, one digit for red, one digit for green, one digit for blue.
+
+This reduces the total number of possible colors to around 4,000. But browsers will interpret `#FF0000` and `#F00` as exactly the same color.
+
+```
+<style>
+  body {
+    background-color: #F00;
+  }
+</style>
+```
\ No newline at end of file
diff --git a/Challenge-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md b/Challenge-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md
new file mode 100644
index 0000000..8a36dc4
--- /dev/null
+++ b/Challenge-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md
@@ -0,0 +1,4 @@
+# Use Bracket Notation to Find the First Character in a String
+Bracket notation is a way to get a character at a specific index within a string.
+
+Computers don't start counting at `1` like humans do. They start at `0`. `firstLetterOfLastName = lastName[0];`
diff --git a/Challenge-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md b/Challenge-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md
new file mode 100644
index 0000000..ae73703
--- /dev/null
+++ b/Challenge-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md
@@ -0,0 +1,6 @@
+# Use Bracket Notation to Find the Last Character in a String
+In order to get the last letter of a string, you can subtract one from the string's length.
+
+For example, if `var firstName = "Charles"`, you can get the value of the last letter of the string by using `firstName[firstName.length - 1]`.
+
+`var lastLetterOfLastName = lastName[lastName.length -1];`
diff --git a/Challenge-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md b/Challenge-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md
new file mode 100644
index 0000000..95fab20
--- /dev/null
+++ b/Challenge-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md
@@ -0,0 +1,6 @@
+# Use Bracket Notation to Find the Nth Character in a String
+You can also use bracket notation to get the character at other positions within a string.
+
+Remember that computers start counting at `0`, so the first character is actually the zeroth character.
+
+`var thirdLetterOfLastName = lastName[2];`
diff --git a/Challenge-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md b/Challenge-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md
new file mode 100644
index 0000000..dab3730
--- /dev/null
+++ b/Challenge-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md
@@ -0,0 +1,2 @@
+# Use Bracket Notation to Find the Nth-to-Last Character in a String
+You can get the value of the third-to-last letter of the `var firstName = "Charles"` string by using `firstName[firstName.length - 3]`.
diff --git a/Challenge-Use-CSS-Selectors-to-Style-Elements.md b/Challenge-Use-CSS-Selectors-to-Style-Elements.md
new file mode 100644
index 0000000..c017d50
--- /dev/null
+++ b/Challenge-Use-CSS-Selectors-to-Style-Elements.md
@@ -0,0 +1,7 @@
+Instead of giving style attributes one by one, we can do this to multiple elements at the same time.
+
+You can create a style element like this: `<style></style>`.
+
+Inside that style element, you can create a CSS selector for any HTML Elements. For example, if you wanted all h2 elements to be red, your style element would look like this: `<style>h2 {color: red;}</style>`.
+
+Note that it's important to have both opening and closing curly braces `({` and `})` around each element's style. You also need to make sure your element's style is between the opening and closing style tags. Finally, be sure to add the semicolon to the end of each of your element's styles.
\ No newline at end of file
diff --git a/Challenge-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md b/Challenge-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md
new file mode 100644
index 0000000..3d0fbb9
--- /dev/null
+++ b/Challenge-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md
@@ -0,0 +1,10 @@
+Instead of specifying an element's`margin-top`, `margin-right`, `margin-bottom`, and `margin-left` attributes, you can specify them all in one line, like this: `margin: 10px 20px 10px 20px;`.
+
+These four values work like a clock: top, right, bottom, left, and will produce the exact same result as using the side-specific margin instructions.
+
+```
+.green-box {
+  background-color: green;
+  margin: 40px 20px 20px 40px;
+}
+```
\ No newline at end of file
diff --git a/Challenge-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md b/Challenge-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md
new file mode 100644
index 0000000..4f2be59
--- /dev/null
+++ b/Challenge-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md
@@ -0,0 +1,10 @@
+Instead of specifying an element's `padding-top`, `padding-right`, `padding-bottom`, and `padding-lef`t attributes, you can specify them all in one line, like this: `padding: 10px 20px 10px 20px;`.
+
+These four values work like a clock: top, right, bottom, left, and will produce the exact same result as using the side-specific padding instructions.
+
+```
+.green-box {
+  background-color: green;
+  padding: 40px 20px 20px 40px
+}
+```
\ No newline at end of file
diff --git a/Challenge-Use-Comments-to-Clarify-Code.md b/Challenge-Use-Comments-to-Clarify-Code.md
new file mode 100644
index 0000000..5d088f5
--- /dev/null
+++ b/Challenge-Use-Comments-to-Clarify-Code.md
@@ -0,0 +1,29 @@
+# Use Comments to Clarify Code
+When we start using jQuery, we will modify HTML elements without needing to actually change them in HTML.
+
+This is a great way to make websites with a particular structure. Remember that you can start a comment with `<!-- and end a comment with -->`
+
+```
+<!--You shouldn't need to modify code below this line -->
+<div class="container-fluid">
+ <h3 class="text-primary text-center">jQuery Playground</h3>
+ <div class="row">
+   <div class="col-xs-6">
+     <h4>#left-well</h4>
+     <div class="well" id="left-well">
+       <button class="btn btn-default target" id="target1">#target1</button>
+       <button class="btn btn-default target" id="target2">#target2</button>
+       <button class="btn btn-default target" id="target3">#target3</button>
+     </div>
+   </div>
+   <div class="col-xs-6">
+     <h4>#right-well</h4>
+     <div class="well" id="right-well">
+       <button class="btn btn-default target" id="target4">#target4</button>
+       <button class="btn btn-default target" id="target5">#target5</button>
+       <button class="btn btn-default target" id="target6">#target6</button>
+     </div>
+   </div>
+ </div>
+</div>
+```
diff --git a/Challenge-Use-Conditional-Logic-with-If-Else-Statements.md b/Challenge-Use-Conditional-Logic-with-If-Else-Statements.md
new file mode 100644
index 0000000..2d5d0c7
--- /dev/null
+++ b/Challenge-Use-Conditional-Logic-with-If-Else-Statements.md
@@ -0,0 +1,19 @@
+#Waypoint: Use Conditional Logic with If Statements
+
+We can use `if` statements in JavaScript to execute code only if the specified condition is met.
+
+Each `if` statement requires a `boolean` condition to evaluate. If the boolean evaluates to `true`, the statements inside the curly braces will execute. Otherwise, if it evaluates to `false`, the code will not execute.
+
+##Example
+
+```js
+
+function test(myVal) {
+  if (myVal > 10) {
+     return "Greater Than";
+  }
+  return "Not Greater Than";
+}
+```
+
+If `myVal` is greater than `10`, the function will return `"Greater Than"`. If it is not, the function will return `"Not Greater Than"`. Both `return` statements will never get executed because as soon as the first one is encountered, the execution exits the function and returns control to where the function was called.
\ No newline at end of file
diff --git a/Challenge-Use-HTML5-to-Require-a-Field.md b/Challenge-Use-HTML5-to-Require-a-Field.md
new file mode 100644
index 0000000..718c10a
--- /dev/null
+++ b/Challenge-Use-HTML5-to-Require-a-Field.md
@@ -0,0 +1,10 @@
+You can require specific form fields so that your user will not be able to submit your form until he or she has filled them out.
+
+For example, if you wanted to make a text input field required, you can just add the word required within your input element, you would use: `<input type="text" required>`.
+
+```
+<form action="/submit-cat-photo">
+  <input type="text" placeholder="cat photo URL" required>
+  <button type="submit">Submit</button>
+</form>
+```
\ No newline at end of file
diff --git a/Challenge-Use-Hex-Code-for-Specific-Colors.md b/Challenge-Use-Hex-Code-for-Specific-Colors.md
new file mode 100644
index 0000000..0fe85a2
--- /dev/null
+++ b/Challenge-Use-Hex-Code-for-Specific-Colors.md
@@ -0,0 +1,3 @@
+With CSS, we use 6 hexadecimal number to represent colors. For example, `#000000` is the lowest possible value, and it represents the color black.
+
+This is the same as `#RRGGBB` which can also be simplified to `#RGB`.
\ No newline at end of file
diff --git a/Challenge-Use-Hex-Code-for-Specific-Shades-of-Gray.md b/Challenge-Use-Hex-Code-for-Specific-Shades-of-Gray.md
new file mode 100644
index 0000000..50e6970
--- /dev/null
+++ b/Challenge-Use-Hex-Code-for-Specific-Shades-of-Gray.md
@@ -0,0 +1 @@
+We can also create other shades of gray by evenly mixing all three colors. We can go very close to true black. `background-color: #111111;`
\ No newline at end of file
diff --git a/Challenge-Use-Hex-Code-to-Color-Elements-Blue.md b/Challenge-Use-Hex-Code-to-Color-Elements-Blue.md
new file mode 100644
index 0000000..98b2eb6
--- /dev/null
+++ b/Challenge-Use-Hex-Code-to-Color-Elements-Blue.md
@@ -0,0 +1,9 @@
+Just as with [red](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Waypoint-Use-Hex-Code-to-Color-Elements-Red) and the others.
+
+```
+<style>
+  body {
+    background-color: #0000FF;
+  }
+</style>
+```
\ No newline at end of file
diff --git a/Challenge-Use-Hex-Code-to-Color-Elements-Gray.md b/Challenge-Use-Hex-Code-to-Color-Elements-Gray.md
new file mode 100644
index 0000000..fdbe1a2
--- /dev/null
+++ b/Challenge-Use-Hex-Code-to-Color-Elements-Gray.md
@@ -0,0 +1 @@
+We can also create different shades of gray by evenly mixing all three colors. `background-color: #808080;`
\ No newline at end of file
diff --git a/Challenge-Use-Hex-Code-to-Color-Elements-Green.md b/Challenge-Use-Hex-Code-to-Color-Elements-Green.md
new file mode 100644
index 0000000..b11e4e3
--- /dev/null
+++ b/Challenge-Use-Hex-Code-to-Color-Elements-Green.md
@@ -0,0 +1,9 @@
+Just as with [red](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Waypoint-Use-Hex-Code-to-Color-Elements-Red) and the others.
+
+```
+<style>
+  body {
+    background-color: #00FF00;
+  }
+</style>
+```
\ No newline at end of file
diff --git a/Challenge-Use-Hex-Code-to-Color-Elements-Red.md b/Challenge-Use-Hex-Code-to-Color-Elements-Red.md
new file mode 100644
index 0000000..4670af3
--- /dev/null
+++ b/Challenge-Use-Hex-Code-to-Color-Elements-Red.md
@@ -0,0 +1,3 @@
+Hex code follows the red-green-blue, or rgb format. The first two digits of hex code represent the amount of red in the color. The third and fourth digit represent the amount of green. The fifth and sixth represent the amount of blue.
+
+So to get the absolute brightest red, you would just use `F` for the first and second digits (the highest possible value) and `0` for the third, fourth, fifth and sixth digits (the lowest possible value).
\ No newline at end of file
diff --git a/Challenge-Use-Hex-Code-to-Color-Elements-White.md b/Challenge-Use-Hex-Code-to-Color-Elements-White.md
new file mode 100644
index 0000000..0168eae
--- /dev/null
+++ b/Challenge-Use-Hex-Code-to-Color-Elements-White.md
@@ -0,0 +1 @@
+`0` is the lowest number in hex code, and represents a complete absence of color. `F` is the highest number in hex code, and it represents the maximum possible brightness.
\ No newline at end of file
diff --git a/Challenge-Use-Hex-Code-to-Mix-Colors.md b/Challenge-Use-Hex-Code-to-Mix-Colors.md
new file mode 100644
index 0000000..4e3b298
--- /dev/null
+++ b/Challenge-Use-Hex-Code-to-Mix-Colors.md
@@ -0,0 +1,9 @@
+Orange is pure red, mixed with some green, and no blue.
+
+```
+<style>
+  body {
+    background-color: #FFA500;
+  }
+</style>
+```
\ No newline at end of file
diff --git a/Challenge-Use-RGB-to-Color-Elements-Blue.md b/Challenge-Use-RGB-to-Color-Elements-Blue.md
new file mode 100644
index 0000000..6396043
--- /dev/null
+++ b/Challenge-Use-RGB-to-Color-Elements-Blue.md
@@ -0,0 +1 @@
+The RGB value blue: `rgb(0, 0, 255)`
\ No newline at end of file
diff --git a/Challenge-Use-RGB-to-Color-Elements-Gray.md b/Challenge-Use-RGB-to-Color-Elements-Gray.md
new file mode 100644
index 0000000..0dc39f8
--- /dev/null
+++ b/Challenge-Use-RGB-to-Color-Elements-Gray.md
@@ -0,0 +1 @@
+RGB value for gray: `rgb(128, 128, 128)`
\ No newline at end of file
diff --git a/Challenge-Use-RGB-to-Color-Elements-Green.md b/Challenge-Use-RGB-to-Color-Elements-Green.md
new file mode 100644
index 0000000..65330d0
--- /dev/null
+++ b/Challenge-Use-RGB-to-Color-Elements-Green.md
@@ -0,0 +1 @@
+The rgb value green: `rgb(0, 255, 0)`
\ No newline at end of file
diff --git a/Challenge-Use-RGB-to-Color-Elements-Red.md b/Challenge-Use-RGB-to-Color-Elements-Red.md
new file mode 100644
index 0000000..4705b36
--- /dev/null
+++ b/Challenge-Use-RGB-to-Color-Elements-Red.md
@@ -0,0 +1 @@
+`background-color: rgb(255, 0, 0)`
\ No newline at end of file
diff --git a/Challenge-Use-RGB-to-Color-Elements-White.md b/Challenge-Use-RGB-to-Color-Elements-White.md
new file mode 100644
index 0000000..a34d6da
--- /dev/null
+++ b/Challenge-Use-RGB-to-Color-Elements-White.md
@@ -0,0 +1 @@
+`background-color: rgb(255,255,255)`
\ No newline at end of file
diff --git a/Challenge-Use-RGB-to-Mix-Colors.md b/Challenge-Use-RGB-to-Mix-Colors.md
new file mode 100644
index 0000000..f494b7f
--- /dev/null
+++ b/Challenge-Use-RGB-to-Mix-Colors.md
@@ -0,0 +1 @@
+RGB value orange: `rgb(255, 165, 0)`
\ No newline at end of file
diff --git a/Challenge-Use-RGB-values-to-Color-Elements.md b/Challenge-Use-RGB-values-to-Color-Elements.md
new file mode 100644
index 0000000..979b364
--- /dev/null
+++ b/Challenge-Use-RGB-values-to-Color-Elements.md
@@ -0,0 +1,5 @@
+Another way you can represent colors in CSS is by using `rgb` values.
+
+RGB values look like this: `rgb(0, 0, 0)` for black and `rgb(255, 255, 255)` for white.
+
+Instead of using six hexadecimal digits like you do with hex code, with rbg you specify the brightness of each color with a number between 0 and 255. `background-color: rgb(0,0,0);`
\ No newline at end of file
diff --git a/Challenge-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md b/Challenge-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md
new file mode 100644
index 0000000..e82ab8b
--- /dev/null
+++ b/Challenge-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md
@@ -0,0 +1,6 @@
+# Use Responsive Design with Bootstrap Fluid Containers
+Bootstrap will figure out how wide your screen is and respond by resizing your HTML elements - hence the name Responsive Design.
+
+With responsive design, there is no need to design a mobile version of your website. It will look good on devices with screens of any width.
+
+You can add Bootstrap to any app just by including it with `<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"/>` at the top of your HTML.
diff --git a/Challenge-Use-Spans-for-Inline-Elements.md b/Challenge-Use-Spans-for-Inline-Elements.md
new file mode 100644
index 0000000..ce52c34
--- /dev/null
+++ b/Challenge-Use-Spans-for-Inline-Elements.md
@@ -0,0 +1,4 @@
+# Use Spans for Inline Elements
+You can use use spans to create inline elements. By using the span element, you can put several elements together, and even style different parts of the same element differently.
+
+`<p><span class = "text-danger">Things cats love:</span></p>`
diff --git a/Challenge-Use-a-CSS-Class-to-Style-an-Element.md b/Challenge-Use-a-CSS-Class-to-Style-an-Element.md
new file mode 100644
index 0000000..12f3d90
--- /dev/null
+++ b/Challenge-Use-a-CSS-Class-to-Style-an-Element.md
@@ -0,0 +1,3 @@
+Classes are reusable styles that can be added to HTML elements. You can apply a class to an HTML element like this: `<h2 class="blue-text">CatPhotoApp</h2>`.
+
+Note that in your CSS style element, classes should start with a period. In your HTML elements' class declarations, classes shouldn't start with a period.
\ No newline at end of file
diff --git a/Challenge-Use-an-ID-Attribute-to-Style-an-Element.md b/Challenge-Use-an-ID-Attribute-to-Style-an-Element.md
new file mode 100644
index 0000000..56e33d2
--- /dev/null
+++ b/Challenge-Use-an-ID-Attribute-to-Style-an-Element.md
@@ -0,0 +1,7 @@
+One cool thing about `id` attributes is that, like classes, you can style them using CSS.
+
+Here's an example of how you can take your element with the `id` attribute of cat-photo-element and give it the background color of green.
+
+In your style element: `#cat-photo-element { background-color: green; }`
+
+Note that inside your style element, you always reference classes by putting a `.` in front of their names. You always reference ids by putting a `#` in front of their names.
\ No newline at end of file
diff --git a/Challenge-Use-appendTo-to-Move-Elements-with-jQuery.md b/Challenge-Use-appendTo-to-Move-Elements-with-jQuery.md
new file mode 100644
index 0000000..bcf0317
--- /dev/null
+++ b/Challenge-Use-appendTo-to-Move-Elements-with-jQuery.md
@@ -0,0 +1,4 @@
+# Use appendTo to Move Elements with jQuery
+jQuery has a function called `appendTo()` that allows you to select HTML elements and append them to another element.
+
+For example, if we wanted to move target4 from our right well to our left well, we would use `$("#target4").appendTo("#left-well");`
diff --git a/Challenge-Use-jQuery-to-Modify-the-Entire-Page.md b/Challenge-Use-jQuery-to-Modify-the-Entire-Page.md
new file mode 100644
index 0000000..da2ee55
--- /dev/null
+++ b/Challenge-Use-jQuery-to-Modify-the-Entire-Page.md
@@ -0,0 +1,4 @@
+# Use jQuery to Modify the Entire Page
+jQuery can target the body element as well.
+
+Here's how we would make the entire body fade out: `$('body').addClass('animated fadeOut');`
diff --git a/Challenge-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md b/Challenge-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md
new file mode 100644
index 0000000..37d3a99
--- /dev/null
+++ b/Challenge-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md
@@ -0,0 +1,16 @@
+# Use the Bootstrap Grid to Put Elements Side By Side
+Bootstrap uses a responsive grid system that makes it easier to put elements into rows and tell each element's relative width.
+
+![Bootstrap 12 column grid layout](https://www.evernote.com/shard/s116/sh/f0944d97-08b8-4615-8273-a327bf41fb05/de1a3acbceef89ae/deep/0/)
+
+Note that in this illustration, the `col-md-_` class is being used. Here, md means medium, and _ is a number specifying how many columns wide the element should be. In this case, the column width of an element on a medium-sized screen, such as a laptop, is being specified.
+
+```
+<div class="row">
+
+  <div class="col-xs-4"><button class="btn btn-block btn-primary">Like</button></div>
+  <div class="col-xs-4"><button class="btn btn-block btn-info">Info</button></div>
+  <div class="col-xs-4"><button class="btn btn-block btn-danger">Delete</button></div>
+
+</div>
+```
diff --git a/Challenge-Use-the-Javascript-Console.md b/Challenge-Use-the-Javascript-Console.md
new file mode 100644
index 0000000..68fc262
--- /dev/null
+++ b/Challenge-Use-the-Javascript-Console.md
@@ -0,0 +1,7 @@
+Both Chrome and Firefox have excellent JavaScript consoles, also known as DevTools, for debugging your JavaScript.
+
+You can find Developer tools in your Chrome's menu or Web Console in FireFox's menu. If you're using a different browser, or a mobile phone, we strongly recommend switching to desktop Firefox or Chrome.
+
+You can also use [https://repl.it/](https://repl.it/) to run code online.
+
+This is how you print to the console: `console.log('Hello world!')`
\ No newline at end of file
diff --git a/Challenge-Using-Objects-For-Lookups.md b/Challenge-Using-Objects-For-Lookups.md
new file mode 100644
index 0000000..104d06f
--- /dev/null
+++ b/Challenge-Using-Objects-For-Lookups.md
@@ -0,0 +1,20 @@
+#Waypoint: Using Objects for Lookups
+
+Objects can be thought of as a key/value storage, like a dictionary. If you have tabular data, you can use an object to "lookup" values rather than a `switch` statement or an `if/else` chain. This is most useful when you know that your input data is limited to a certain range.
+
+Here is an example of a simple reverse alphabet lookup:
+
+```js
+var alpha = {
+  1:"Z",
+  2:"Y",
+  3:"X",
+  4:"W",
+  ...
+  24:"C",
+  25:"B",
+  26:"A"
+};
+alpha[2]; // "Y"
+alpha[24]; // "C"
+```
\ No newline at end of file
diff --git a/Challenge-Using-typeof.md b/Challenge-Using-typeof.md
new file mode 100644
index 0000000..ffa5664
--- /dev/null
+++ b/Challenge-Using-typeof.md
@@ -0,0 +1,13 @@
+You can use `typeof` to check the `data structure`, or type, of a variable.
+
+Note that in JavaScript, arrays are technically a type of object.
+
+```js
+console.log(typeof(""));
+
+console.log(typeof(0));
+
+console.log(typeof([]));
+
+console.log(typeof({}));
+```
\ No newline at end of file
diff --git a/Challenge-Warn-your-Users-of-a-Dangerous-Action.md b/Challenge-Warn-your-Users-of-a-Dangerous-Action.md
new file mode 100644
index 0000000..8fe9795
--- /dev/null
+++ b/Challenge-Warn-your-Users-of-a-Dangerous-Action.md
@@ -0,0 +1,4 @@
+# Warn your Users of a Dangerous Action
+The `btn-danger` class is the button color you'll use to notify users that the button performs a destructive action, such as deleting a cat photo. Note that these buttons still need the `btn` and `btn-block` classes.
+
+`<button class="btn btn-block btn-danger">Delete</button>`
diff --git a/Challenge-Write-Reusable-JavaScript-with-Functions.md b/Challenge-Write-Reusable-JavaScript-with-Functions.md
new file mode 100644
index 0000000..9ba5977
--- /dev/null
+++ b/Challenge-Write-Reusable-JavaScript-with-Functions.md
@@ -0,0 +1,32 @@
+# Write Reusable JavaScript with Functions
+
+In JavaScript, we can divide up our code into reusable parts called functions.
+
+Here's an example of a function:
+
+```js
+
+function functionName() {
+  console.log("Hello World");
+}
+```
+
+You can `call` or `invoke` this function by using its name followed by parentheses, like this:
+
+`functionName();`
+
+Each time the function is called it will print out the message "Hello World" on the dev console. All of the code between the curly braces will be executed every time the function is called.
+
+Here is another example:
+
+```js
+function otherFunctionName (a, b) {
+	return(a + b);
+}
+```
+
+We can `call` or `invoke` our function like this:
+
+`otherFunctionName(1,2);`
+ 
+and it will run and return its return value to us.
diff --git a/Develop-Back-End-Project-locally-and-run-on-c9.io.md b/Develop-Back-End-Project-locally-and-run-on-c9.io.md
new file mode 100644
index 0000000..4021f1f
--- /dev/null
+++ b/Develop-Back-End-Project-locally-and-run-on-c9.io.md
@@ -0,0 +1,8 @@
+If you like me develop basejump locally and want it run on c9, this may help you.
+
+1. push your project to github
+2. create a new workspace in c9 and set 'Clone from Git or Mercurial URL (optional)' with your github repository URL. After submit your create page, c9 will clone your project for you.
+3. run `echo "export NODE_PATH=$NODE_PATH:/home/ubuntu/.nvm/v0.10.35/lib/node_modules" >> ~/.bashrc && source ~/.bashrc` in your c9 terminal window
+4. run `bower install && sudo npm install`
+5. run `mkdir data && echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest "$@"' > mongod && chmod a+x mongod && ./mongod`
+6. run `grunt serve` in another terminal window
diff --git a/Develop-BaseJump-locally-and-run-on-c9.io.md b/Develop-BaseJump-locally-and-run-on-c9.io.md
deleted file mode 100644
index 4021f1f..0000000
--- a/Develop-BaseJump-locally-and-run-on-c9.io.md
+++ /dev/null
@@ -1,8 +0,0 @@
-If you like me develop basejump locally and want it run on c9, this may help you.
-
-1. push your project to github
-2. create a new workspace in c9 and set 'Clone from Git or Mercurial URL (optional)' with your github repository URL. After submit your create page, c9 will clone your project for you.
-3. run `echo "export NODE_PATH=$NODE_PATH:/home/ubuntu/.nvm/v0.10.35/lib/node_modules" >> ~/.bashrc && source ~/.bashrc` in your c9 terminal window
-4. run `bower install && sudo npm install`
-5. run `mkdir data && echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest "$@"' > mongod && chmod a+x mongod && ./mongod`
-6. run `grunt serve` in another terminal window
diff --git a/Front-End-Project-Use-the-Twitchtv-JSON-API.md b/Front-End-Project-Use-the-Twitchtv-JSON-API.md
new file mode 100644
index 0000000..6f01414
--- /dev/null
+++ b/Front-End-Project-Use-the-Twitchtv-JSON-API.md
@@ -0,0 +1,19 @@
+If you're trying to tackle this challenge with jQuery's `$.getJSON()` method, chances are you'll get an error message concerning Cross-Origin Resource Sharing (CORS).
+
+The easiest way to resolve this is to use jQuery's JSONP capabilities. From the Twitch API's [readme page](https://github.com/justintv/Twitch-API#json-p):
+
+> All API methods support JSON-P by providing a callback parameter with the request.
+
+Also the [jQuery documentation](http://api.jquery.com/jQuery.getJSON/) states:
+
+> If the URL includes the string "callback=?" (or similar, as defined by the server-side API), the request is treated as JSONP instead.
+
+Here's an example call to fetch Free Code Camp's Twitch channel data:
+
+```js
+$.getJSON('https://api.twitch.tv/kraken/streams/freecodecamp?callback=?', function(data) {
+  console.log(data);
+});
+```
+
+JSONP is considered insecure [according to Wikipedia](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing#CORS_vs_JSONP), but should be sufficient for our purposes. For a detailed discussion on Twitch's CORS restriction, please read [issue #133](https://github.com/justintv/Twitch-API/issues/133) on the Twitch-API repository.
\ No newline at end of file
diff --git a/Guide-to-Back-End-Projects-Table-of-Contents.md b/Guide-to-Back-End-Projects-Table-of-Contents.md
new file mode 100644
index 0000000..f6a7aa9
--- /dev/null
+++ b/Guide-to-Back-End-Projects-Table-of-Contents.md
@@ -0,0 +1,31 @@
+###Table of contents
+* Part 1: Frontend
+    - [Frontend file structure](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Frontend-file-structure)
+    - [Creating a new route](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Creating-a-new-route)
+    - [Creating a new directive](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Creating-a-new-directive)
+    - [Grunt](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Grunt)
+* Part 2: Backend
+    - [Backend file structure](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Backend-file-structure)
+    - [Creating a new API endpoint](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Creating-a-new-API-endpoint)
+    - [Fixing exports.update](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Fixing-exports.update)
+* Part 3: Interfacing Between Frontend & Backend
+    - [Accessing the database from your frontend](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Accessing-the-database-from-your-frontend)
+    - [Seed Data](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Seed-data)
+    - [Quick tip: keep data in sync](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Quick-tip-keep-data-in-sync)
+* Part 4: Dynamic URLs using $routeParams, more useful APIs
+    - [Dynamic URLS using $routeParams](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Dynamic-URLs-using-$routeParams)
+    - [More Useful APIs](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/More-useful-APIs)
+* Part 5: Auth, isLoggedInAsync()
+    - [Get info about the current user](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Get-info-about-the-current-user)
+    - [Restrict a page to authenticated users](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Restrict-a-page-to-authenticated-users)
+    - [isLoggedInAsync()](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/isLoggedInAsync())
+* [Bonus: SocketIO](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Bonus-SocketIO)
+* [Epilogue](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Epilogue)
+
+###Legend
+**/bolded/names/with.extensions** are directories and files in the project file structure  
+<a href="#">highlighted.items/are/hypothetical</a> URLs that allow access to different pages in your app  
+*italicizedItems* are function and object names within your code
+
+[PREVIOUS](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Intro-to-Yeoman-Angular-Fullstack-Basejumps)
+[NEXT](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Frontend-file-structure)
diff --git a/Guide-to-Basejumps-Table-of-Contents.md b/Guide-to-Basejumps-Table-of-Contents.md
deleted file mode 100644
index f6a7aa9..0000000
--- a/Guide-to-Basejumps-Table-of-Contents.md
+++ /dev/null
@@ -1,31 +0,0 @@
-###Table of contents
-* Part 1: Frontend
-    - [Frontend file structure](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Frontend-file-structure)
-    - [Creating a new route](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Creating-a-new-route)
-    - [Creating a new directive](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Creating-a-new-directive)
-    - [Grunt](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Grunt)
-* Part 2: Backend
-    - [Backend file structure](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Backend-file-structure)
-    - [Creating a new API endpoint](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Creating-a-new-API-endpoint)
-    - [Fixing exports.update](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Fixing-exports.update)
-* Part 3: Interfacing Between Frontend & Backend
-    - [Accessing the database from your frontend](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Accessing-the-database-from-your-frontend)
-    - [Seed Data](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Seed-data)
-    - [Quick tip: keep data in sync](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Quick-tip-keep-data-in-sync)
-* Part 4: Dynamic URLs using $routeParams, more useful APIs
-    - [Dynamic URLS using $routeParams](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Dynamic-URLs-using-$routeParams)
-    - [More Useful APIs](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/More-useful-APIs)
-* Part 5: Auth, isLoggedInAsync()
-    - [Get info about the current user](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Get-info-about-the-current-user)
-    - [Restrict a page to authenticated users](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Restrict-a-page-to-authenticated-users)
-    - [isLoggedInAsync()](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/isLoggedInAsync())
-* [Bonus: SocketIO](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Bonus-SocketIO)
-* [Epilogue](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Epilogue)
-
-###Legend
-**/bolded/names/with.extensions** are directories and files in the project file structure  
-<a href="#">highlighted.items/are/hypothetical</a> URLs that allow access to different pages in your app  
-*italicizedItems* are function and object names within your code
-
-[PREVIOUS](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Intro-to-Yeoman-Angular-Fullstack-Basejumps)
-[NEXT](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Frontend-file-structure)
diff --git a/Intro-to-Yeoman-Angular-Fullstack-Back-End-Projects.md b/Intro-to-Yeoman-Angular-Fullstack-Back-End-Projects.md
new file mode 100644
index 0000000..2ea4784
--- /dev/null
+++ b/Intro-to-Yeoman-Angular-Fullstack-Back-End-Projects.md
@@ -0,0 +1,9 @@
+> Hey FreeCodeCampers! This guide is here to help you navigate creating your first basejump. When I encountered the first basejump, I had no idea what was going on and spent weeks learning all of these things myself. Everything here is stuff I wish I had known coming into the basejumps. Oh and by the way, if you have a question that isn't answered by this guide, that's an issue, and you should report it as an issue to this repository! —[@clnhll](http://twitter.com/clnhll)
+
+Yeoman is a tool that allows you to generate barebones apps based on different software stacks using “generator” packages made by developers who want to make your life easier. These packages streamline your time developing and deploying websites using your platform of choice. We’re using a full-stack MEAN (MongoDB, ExpressJS, AngularJS, NodeJS) generator called generator-angular-fullstack by DaftMonk (https://github.com/DaftMonk/generator-angular-fullstack).
+
+Once you’ve completed the Waypoint: Get Set for Basejumps, use this guide to navigate the base structure of your new app and learn how to interact with the database as well as the user.
+
+[NEXT](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Guide-to-Basejumps-Table-of-Contents)
+
+Sourced from (https://github.com/clnhll/guidetobasejumps) with permission.
\ No newline at end of file
diff --git a/Intro-to-Yeoman-Angular-Fullstack-Basejumps.md b/Intro-to-Yeoman-Angular-Fullstack-Basejumps.md
deleted file mode 100644
index 2ea4784..0000000
--- a/Intro-to-Yeoman-Angular-Fullstack-Basejumps.md
+++ /dev/null
@@ -1,9 +0,0 @@
-> Hey FreeCodeCampers! This guide is here to help you navigate creating your first basejump. When I encountered the first basejump, I had no idea what was going on and spent weeks learning all of these things myself. Everything here is stuff I wish I had known coming into the basejumps. Oh and by the way, if you have a question that isn't answered by this guide, that's an issue, and you should report it as an issue to this repository! —[@clnhll](http://twitter.com/clnhll)
-
-Yeoman is a tool that allows you to generate barebones apps based on different software stacks using “generator” packages made by developers who want to make your life easier. These packages streamline your time developing and deploying websites using your platform of choice. We’re using a full-stack MEAN (MongoDB, ExpressJS, AngularJS, NodeJS) generator called generator-angular-fullstack by DaftMonk (https://github.com/DaftMonk/generator-angular-fullstack).
-
-Once you’ve completed the Waypoint: Get Set for Basejumps, use this guide to navigate the base structure of your new app and learn how to interact with the database as well as the user.
-
-[NEXT](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Guide-to-Basejumps-Table-of-Contents)
-
-Sourced from (https://github.com/clnhll/guidetobasejumps) with permission.
\ No newline at end of file
diff --git a/Test-issue-with-Bonfire-truncate-a-string.md b/Test-issue-with-Bonfire-truncate-a-string.md
deleted file mode 100644
index f40d8f0..0000000
--- a/Test-issue-with-Bonfire-truncate-a-string.md
+++ /dev/null
@@ -1,22 +0,0 @@
-Hi everyone,
-
-There is an issue with "Bonfire:Truncate a String". 
-First heres the code:
-```
-    function truncate(str, num) {
-  var truncd = '';
-  if (str.length > num) {
-    truncd = str.slice(0, num - 3) + '...';
-    return truncd;
-  }
-
-  return str;
-}
-truncate("A-tisket a-tasket A green and yellow basket", 1, "");
-```
-It should not pass the first test that is
-"A-tisket a-tasket A green and yellow basket", 1 should return "A-tisket..."
-
-According to this test the console should shoe "A-tisket..."but the console says"A-tisket a-tasket A green and yellow bask..."
-
-but to my surprise it still passed... I hope I will get an explaination to this
\ No newline at end of file
diff --git a/Vadodara.md b/Vadodara.md
deleted file mode 100644
index 706181c..0000000
--- a/Vadodara.md
+++ /dev/null
@@ -1 +0,0 @@
-Learn to Code Vadodara!
\ No newline at end of file
diff --git a/Waypoint-Access-Array-Data-with-Indexes.md b/Waypoint-Access-Array-Data-with-Indexes.md
deleted file mode 100644
index 62a09d8..0000000
--- a/Waypoint-Access-Array-Data-with-Indexes.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Access Array Data with Indexes
-We can access the data inside arrays using indexes.
-
-Array indexes are written in the same bracket notation that strings use, except that instead of specifying a character, they are specifying an entry in the array.
-
-For example:
-
-```
-var array = [1,2,3];
-array[0]; //equals 1
-var data = array[1];
-```
diff --git a/Waypoint-Access-Multi-Dimensional-Arrays-With-Indexes.md b/Waypoint-Access-Multi-Dimensional-Arrays-With-Indexes.md
deleted file mode 100644
index f3668b8..0000000
--- a/Waypoint-Access-Multi-Dimensional-Arrays-With-Indexes.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Access Multi-Dimensional Arrays With Indexes
-One way to think of a `multi-dimensional` array, is as an array of arrays. When you use brackets to access your array, the first set of bracket refers to the entries in the outer-most array, and each subsequent level of brackets refers to the next level of entries inside.
-
-## Example
-
-```js
-var arr = [
-    [1,2,3],
-    [4,5,6],
-    [7,8,9],
-    [[10,11,12], 13, 14]
-];
-arr[0]; // equals [1,2,3]
-arr[1][2]; // equals 6
-arr[3][0][1]; // equals 11
-```
diff --git a/Waypoint-Accessing-Nested-Arrays-In-Json.md b/Waypoint-Accessing-Nested-Arrays-In-Json.md
deleted file mode 100644
index ddd908b..0000000
--- a/Waypoint-Accessing-Nested-Arrays-In-Json.md
+++ /dev/null
@@ -1,22 +0,0 @@
-#Waypoint: Accessing Nested Arrays in JSON
-
-As we have seen in earlier examples, JSON objects can contain both nested objects and nested arrays. Similar to accessing nested objects, Array bracket notation can be chained to access nested arrays.
-
-Here is an example of how to access a nested array:
-
-```js
-var ourPets = { 
-  "cats": [
-    "Meowzer",
-    "Fluffy",
-    "Kit-Cat"
-  ],
-  "dogs": [
-    "Spot",
-    "Bowser",
-    "Frankie"
-  ]
-};
-ourPets.cats[1]; // "Fluffy"
-ourPets.dogs[0]; // "Spot"
-```
\ No newline at end of file
diff --git a/Waypoint-Accessing-Nested-Objects-In-Json.md b/Waypoint-Accessing-Nested-Objects-In-Json.md
deleted file mode 100644
index 19c5f33..0000000
--- a/Waypoint-Accessing-Nested-Objects-In-Json.md
+++ /dev/null
@@ -1,22 +0,0 @@
-#Waypoint: Accessing Nested Objects in JSON
-
-The properties and sub-properties of JSON objects can be accessed by chaining together the dot or bracket notation.
-
-Here is a nested JSON Object:
-
-```js
-var ourStorage = {
-  "desk": {
-    "drawer": "stapler"
-  },
-  "cabinet": {
-    "top drawer": { 
-      "folder1": "a file",
-      "folder2": "secrets"
-    },
-    "bottom drawer": "soda"
-  }
-}
-ourStorage.cabinet["top drawer"].folder2;  // "secrets"
-ourStorage.desk.drawer; // "stap
-```
\ No newline at end of file
diff --git a/Waypoint-Accessing-Objects-Properties-With-Bracket-Notation.md b/Waypoint-Accessing-Objects-Properties-With-Bracket-Notation.md
deleted file mode 100644
index dd21a3c..0000000
--- a/Waypoint-Accessing-Objects-Properties-With-Bracket-Notation.md
+++ /dev/null
@@ -1,16 +0,0 @@
-#Waypoint: Accessing Objects Properties with Bracket Notation
-
-The second way to access the properties of an object is bracket notation (`[]`). If the property of the object you are trying to access has a space in it, you will need to use bracket notation.
-
-Here is a sample of using bracket notation to read an object property:
-
-```js
-var myObj = {
-  "Space Name": "Kirk",
-  "More Space": "Spock"
-};
-myObj["Space Name"]; // Kirk
-myObj['More Space']; // Spock
-```
-
-Note that property names with spaces in them must be in quotes (single or double).
\ No newline at end of file
diff --git a/Waypoint-Accessing-Objects-Properties-With-The-Dot-Operator.md b/Waypoint-Accessing-Objects-Properties-With-The-Dot-Operator.md
deleted file mode 100644
index 655da75..0000000
--- a/Waypoint-Accessing-Objects-Properties-With-The-Dot-Operator.md
+++ /dev/null
@@ -1,16 +0,0 @@
-#Waypoint: Accessing Objects Properties with the Dot Operator
-
-There are two ways to access the properties of an object: the dot operator (`.`) and bracket notation (`[]`), similar to an array.
-
-The dot operator is what you use when you know the name of the property you're trying to access ahead of time.
-
-Here is a sample of using the dot operator (`.`) to read an object property:
-
-```js
-var myObj = {
-  prop1: "val1",
-  prop2: "val2"
-};
-myObj.prop1; // val1
-myObj.prop2; // val2
-```
\ No newline at end of file
diff --git a/Waypoint-Accessing-Objects-Properties-With-Variables.md b/Waypoint-Accessing-Objects-Properties-With-Variables.md
deleted file mode 100644
index ce470e1..0000000
--- a/Waypoint-Accessing-Objects-Properties-With-Variables.md
+++ /dev/null
@@ -1,15 +0,0 @@
-#Waypoint: Accessing Objects Properties with Variables
-
-Another use of bracket notation on objects is to use a variable to access a property. This can be very useful for iterating through lists of the object properties or for doing the lookup.
-
-Here is an example of using a variable to access a property:
-
-```js
-var someProp = "propName";
-var myObj = {
-  propName: "Some Value"
-}
-```
-
-myObj[someProp]; // "Some Value"
-Note that we do not use quotes around the variable name when using it to access the property because we are using the value of the variable, not the name
\ No newline at end of file
diff --git a/Waypoint-Add-Alt-Text-to-an-Image-for-Accessibility.md b/Waypoint-Add-Alt-Text-to-an-Image-for-Accessibility.md
deleted file mode 100644
index 903b193..0000000
--- a/Waypoint-Add-Alt-Text-to-an-Image-for-Accessibility.md
+++ /dev/null
@@ -1,5 +0,0 @@
-`alt` attributes, also known as alt text, are what browsers will display if they fail to load the image. alt attributes are also important for blind or visually impaired users to understand what an image portrays. And search engines also look at alt attributes.
-
-In short, every image should have an alt attribute!
-
-You can add an alt attribute right in the img element like this: `<img src="www.your-image-source.com/your-image.jpg" alt="your alt text"/>`.
\ No newline at end of file
diff --git a/Waypoint-Add-Borders-Around-your-Elements.md b/Waypoint-Add-Borders-Around-your-Elements.md
deleted file mode 100644
index 6f1de9f..0000000
--- a/Waypoint-Add-Borders-Around-your-Elements.md
+++ /dev/null
@@ -1,3 +0,0 @@
-CSS borders have attributes like `style`, `color` and `width`.
-
-For example, if we wanted to create a red, 5 pixel border around an HTML element, we could use this class: `<style> .thin-red-border { border-color: red; border-width: 5px; border-style: solid; } </style>`.
\ No newline at end of file
diff --git a/Waypoint-Add-Different-Margins-to-Each-Side-of-an-Element.md b/Waypoint-Add-Different-Margins-to-Each-Side-of-an-Element.md
deleted file mode 100644
index bbb3d9a..0000000
--- a/Waypoint-Add-Different-Margins-to-Each-Side-of-an-Element.md
+++ /dev/null
@@ -1 +0,0 @@
-CSS allows you to control the margin of an element on all four sides with `margin-top`, `margin-right`, `margin-bottom`, and `margin-left` attributes.
\ No newline at end of file
diff --git a/Waypoint-Add-Different-Padding-to-Each-Side-of-an-Element.md b/Waypoint-Add-Different-Padding-to-Each-Side-of-an-Element.md
deleted file mode 100644
index 3765810..0000000
--- a/Waypoint-Add-Different-Padding-to-Each-Side-of-an-Element.md
+++ /dev/null
@@ -1,11 +0,0 @@
-CSS allows you to control the padding of an element on all four sides with `padding-top`, `padding-right`, `padding-bottom`, and `padding-left` attributes.
-
-```
-.green-box {
-  background-color: green;
-  padding-top: 40px;
-  padding-right: 20px;
-  padding-bottom: 20px;
-  padding-left: 40px;
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Add-Elements-within-your-Bootstrap-Wells.md b/Waypoint-Add-Elements-within-your-Bootstrap-Wells.md
deleted file mode 100644
index d9fd630..0000000
--- a/Waypoint-Add-Elements-within-your-Bootstrap-Wells.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add Elements within your Bootstrap Wells
-Once you have gone deep enough in `divs` you can start adding your Bootstrap buttons.
diff --git a/Waypoint-Add-Font-Awesome-Icons-to-all-of-our-Buttons.md b/Waypoint-Add-Font-Awesome-Icons-to-all-of-our-Buttons.md
deleted file mode 100644
index 7a96926..0000000
--- a/Waypoint-Add-Font-Awesome-Icons-to-all-of-our-Buttons.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Add Font Awesome Icons to all of our Buttons
-`<i class="fa fa-trash"></i>` Will add a trash can icon.
-
-`<i class="fa fa-info-circle"></i>` Will add an info icon.
diff --git a/Waypoint-Add-Font-Awesome-Icons-to-our-Buttons.md b/Waypoint-Add-Font-Awesome-Icons-to-our-Buttons.md
deleted file mode 100644
index 97078be..0000000
--- a/Waypoint-Add-Font-Awesome-Icons-to-our-Buttons.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Add Font Awesome Icons to our Buttons
-Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the .svg file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.
-
-`<i class="fa fa-thumbs-up"><button class="btn btn-block btn-primary">Like</i></button>`
diff --git a/Waypoint-Add-ID-Attributes-to-Bootstrap-Elements.md b/Waypoint-Add-ID-Attributes-to-Bootstrap-Elements.md
deleted file mode 100644
index fcb058c..0000000
--- a/Waypoint-Add-ID-Attributes-to-Bootstrap-Elements.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Add ID Attributes to Bootstrap Elements
-Recall that in addition to class attributes, you can give each of your elements an id attribute.
-
-Each id should be unique to a specific element. Remember that you can give an element an id like this: `<div class="well" id="center-well">`
diff --git a/Waypoint-Add-Images-to-your-Website.md b/Waypoint-Add-Images-to-your-Website.md
deleted file mode 100644
index 81cd2fc..0000000
--- a/Waypoint-Add-Images-to-your-Website.md
+++ /dev/null
@@ -1,3 +0,0 @@
-You can add images to your website by using the `img` element, and point to an specific image's URL using the `src` attribute.
-
-An example of this would be `<img src="www.your-image-source.com/your-image.jpg">`. Note that in most cases, img elements are self-closing.
\ No newline at end of file
diff --git a/Waypoint-Add-New-Properties-to-a-JavaScript-Object.md b/Waypoint-Add-New-Properties-to-a-JavaScript-Object.md
deleted file mode 100644
index 320cf00..0000000
--- a/Waypoint-Add-New-Properties-to-a-JavaScript-Object.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Add New Properties to a JavaScript Object
-
-You can add new properties to existing JavaScript objects the same way you would modify them. Here is how: `myDog.bark = "woof-woof";`
diff --git a/Waypoint-Add-Placeholder-Text-to-a-Text-Field.md b/Waypoint-Add-Placeholder-Text-to-a-Text-Field.md
deleted file mode 100644
index 44ae3bc..0000000
--- a/Waypoint-Add-Placeholder-Text-to-a-Text-Field.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Your placeholder text is what appears in your text input before your user has inputed anything.
-
-You can create placeholder text like so: `<input type="text" placeholder="this is placeholder text">`.
\ No newline at end of file
diff --git a/Waypoint-Add-Rounded-Corners-with-a-Border-Radius.md b/Waypoint-Add-Rounded-Corners-with-a-Border-Radius.md
deleted file mode 100644
index 57141eb..0000000
--- a/Waypoint-Add-Rounded-Corners-with-a-Border-Radius.md
+++ /dev/null
@@ -1,12 +0,0 @@
-To make round corners it is all about `border-radius` and pixels.
-
-You can specify a border-radius with pixels. This will affect how rounded the corners are.
-
-```
-.thick-green-border {
-  border-color: green;
-  border-width: 10px;
-  border-style: solid;
-  border-radius: 10px;
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Add-Two-Numbers-with-JavaScript.md b/Waypoint-Add-Two-Numbers-with-JavaScript.md
deleted file mode 100644
index 0dfd506..0000000
--- a/Waypoint-Add-Two-Numbers-with-JavaScript.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Add Two Numbers with JavaScript
-JavaScript uses the `+` symbol for addition. It can also be used instead of `parseInt()` but that is beyond this.
-
-`var sum = 10 + 10;`
diff --git a/Waypoint-Add-a-Negative-Margin-to-an-Element.md b/Waypoint-Add-a-Negative-Margin-to-an-Element.md
deleted file mode 100644
index 97b5b0b..0000000
--- a/Waypoint-Add-a-Negative-Margin-to-an-Element.md
+++ /dev/null
@@ -1 +0,0 @@
-An element's `margin` controls the amount of space between an element's border and surrounding elements. If you set an element's margin to a **negative value**, the element will grow **larger**.
\ No newline at end of file
diff --git a/Waypoint-Add-a-Submit-Button-to-a-Form.md b/Waypoint-Add-a-Submit-Button-to-a-Form.md
deleted file mode 100644
index 75ef7d6..0000000
--- a/Waypoint-Add-a-Submit-Button-to-a-Form.md
+++ /dev/null
@@ -1,8 +0,0 @@
-You will need to create a `button` element. Here's an example submit button: `<button type="submit">this button submits the form</button>`.
-
-```
-<form action="/submit-cat-photo">
-  <input type="text" placeholder="cat photo URL">
-  <button type="submit">Submit</button>
-</form>
-```
\ No newline at end of file
diff --git a/Waypoint-Add-your-JavaScript-Slot-Machine-Slots.md b/Waypoint-Add-your-JavaScript-Slot-Machine-Slots.md
deleted file mode 100644
index aca0b0f..0000000
--- a/Waypoint-Add-your-JavaScript-Slot-Machine-Slots.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Add your JavaScript Slot Machine Slots
-For this part we should notify if they same number is returned three times or return `null` otherwise.
-
-```
-if(slotOne !== slotTwo || slotTwo !== slotThree){
-      return (null);
-    }
-```
-
-If slot one and two are different, or slot two and three are not the same, then return `null`.
diff --git a/Waypoint-Adding-A-Default-Option-In-Switch-Statements.md b/Waypoint-Adding-A-Default-Option-In-Switch-Statements.md
deleted file mode 100644
index ce2d458..0000000
--- a/Waypoint-Adding-A-Default-Option-In-Switch-Statements.md
+++ /dev/null
@@ -1,19 +0,0 @@
-#Waypoint: Adding a default option in Switch statements
-
-In a `switch` statement you may not be able to specify all possible values as `case` statements. Instead, you can add the `default` statement which will be executed if no matching `case` statements are found. Think of it like the final `else` statement in an `if/else` chain.
-
-A `default` statement should be the last case.
-
-```js
-switch (num) {
-  case value1:
-    statement1
-    break;
-  case value2:
-    statement2;
-    break;
-...
-  default:
-    defaultStatement;
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Adjust-the-Margin-of-an-Element.md b/Waypoint-Adjust-the-Margin-of-an-Element.md
deleted file mode 100644
index 0aecc93..0000000
--- a/Waypoint-Adjust-the-Margin-of-an-Element.md
+++ /dev/null
@@ -1,9 +0,0 @@
-An element's `margin` controls the amount of space between an element's `border` and surrounding elements.
-
-```
-.green-box {
-  background-color: green;
-  padding: 20px;
-  margin: 20px;
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Adjusting-the-Padding-of-an-Element.md b/Waypoint-Adjusting-the-Padding-of-an-Element.md
deleted file mode 100644
index 660c885..0000000
--- a/Waypoint-Adjusting-the-Padding-of-an-Element.md
+++ /dev/null
@@ -1,8 +0,0 @@
-HTML elements are essentially little rectangles. Three important attributes control the space that surrounds each HTML element: `padding`, `margin`, and `border`. An element's padding controls the amount of space between the element and its border.
-
-```
-.green-box {
-  background-color: green;
-  padding: 20px;
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Appending-Variables-to-Strings.md b/Waypoint-Appending-Variables-to-Strings.md
deleted file mode 100644
index c4b9610..0000000
--- a/Waypoint-Appending-Variables-to-Strings.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Appending Variables to Strings
-Just as we can build a string over multiple lines out of string literals, we can also append variables to a string using the plus equals `+=` operator.
-
-## Example
-
-```js
-var anAdjective = "awesome!";
-var ourStr = "Free Code Camp is ";
-ourStr += anAdjective;
-```
diff --git a/Waypoint-Apply-the-Default-Bootstrap-Button-Style.md b/Waypoint-Apply-the-Default-Bootstrap-Button-Style.md
deleted file mode 100644
index 3a45b1d..0000000
--- a/Waypoint-Apply-the-Default-Bootstrap-Button-Style.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Apply the Default Bootstrap Button Style
-Bootstrap has a button class called `btn-default`
-
-```
-<div class="container-fluid">
-  <h3 class="text-primary text-center">jQuery Playground</h3>
-  <div class="row">
-    <div class="col-xs-6">
-      <div class="well">
-        <button class="btn btn-default"></button>
-        <button class="btn btn-default"></button>
-        <button class="btn btn-default"></button>
-      </div>
-    </div>
-    <div class="col-xs-6">
-      <div class="well">
-        <button class="btn btn-default"></button>
-        <button class="btn btn-default"></button>
-        <button class="btn btn-default"></button>
-      </div>
-    </div>
-  </div>
-</div>
diff --git a/Waypoint-Assignment-With-A-Returned-Value.md b/Waypoint-Assignment-With-A-Returned-Value.md
deleted file mode 100644
index 3cc5c2d..0000000
--- a/Waypoint-Assignment-With-A-Returned-Value.md
+++ /dev/null
@@ -1,11 +0,0 @@
-#Waypoint: Assignment with a Returned Value
-
-If you'll recall from our discussion of Storing Values with the Equal Operator, everything to the right of the equal sign is resolved before the value is assigned. This means we can take the return value of a function and assign it to a variable.
-
-Assume we have pre-defined a function `sum` which adds two numbers together, then:
-
-```js
-var ourSum = sum(5, 12);
-```
-
-will call `sum` function, which returns a value of `17` and assigns it to `ourSum` variable.
\ No newline at end of file
diff --git a/Waypoint-Assignment-with-Divided-by-Equals.md b/Waypoint-Assignment-with-Divided-by-Equals.md
deleted file mode 100644
index 6de5641..0000000
--- a/Waypoint-Assignment-with-Divided-by-Equals.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Assignment with Divided by Equals
-The `/= operator` divides a variable by another number.
-
-`myVar = myVar / 5;`
-
-Will divide `myVar` by `5`. This can be rewritten as:
-
-`myVar /= 5;`
diff --git a/Waypoint-Assignment-with-Minus-Equals.md b/Waypoint-Assignment-with-Minus-Equals.md
deleted file mode 100644
index f4beec2..0000000
--- a/Waypoint-Assignment-with-Minus-Equals.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Assignment with Minus Equals
-Like the `+= operator`, `-=` subtracts a number from a variable.
-
-`myVar = myVar - 5;`
-
-will subtract `5` from `myVar`. This can be rewritten as:
-
-`myVar -= 5;`
diff --git a/Waypoint-Assignment-with-Plus-Equals.md b/Waypoint-Assignment-with-Plus-Equals.md
deleted file mode 100644
index 8cf37ec..0000000
--- a/Waypoint-Assignment-with-Plus-Equals.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Assignment with Plus Equals
-Everything to the right of the equals sign is evaluated first, so we can say `myVar = myVar + 5;` to add `5` to `myVar`. Since this is such a common pattern, there are operators which do both a mathematical operation and assignment in one step.
-
-One such operator is the `+= operator`.
-
-`myVar += 5;` will add 5 to myVar instead of using any of the follwoing:
-
-```js
-myVar = 5 + myVar;
-myVar = myvar + 5;
-```
diff --git a/Waypoint-Assignment-with-Times-Equals.md b/Waypoint-Assignment-with-Times-Equals.md
deleted file mode 100644
index daf6c50..0000000
--- a/Waypoint-Assignment-with-Times-Equals.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Author
-![@Rafase282](https://avatars0.githubusercontent.com/Rafase282?&s=128)
-
-Submitted by Rafase282
-
-[Github](https://github.com/Rafase282) | [FreeCodeCamp](http://www.freecodecamp.com/rafase282) | [CodePen](http://codepen.io/Rafase282/) | [LinkedIn](https://www.linkedin.com/in/rafase282) | [Blog/Site](https://rafase282.wordpress.com/) | [E-Mail](mailto:rafase282@gmail.com)
-
-# Assignment with Times Equals
-The `*= operator` multiplies a variable by a number.
-
-`myVar = myVar * 5;`
-
-will multiply `myVar` by `5`. This can be rewritten as:
-
-`myVar *= 5;`
diff --git a/Waypoint-Bring-your-JavaScript-Slot-Machine-to-Life.md b/Waypoint-Bring-your-JavaScript-Slot-Machine-to-Life.md
deleted file mode 100644
index a1fe620..0000000
--- a/Waypoint-Bring-your-JavaScript-Slot-Machine-to-Life.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Bring your JavaScript Slot Machine to Life
-Let's use the jQuery selector `$(".slot")` to select all of the slots.
-
-Once they are all selected, we can use bracket notation to access each individual slot:
-
-```
-$($(".slot")[0]).html(slotOne);
-$($(".slot")[1]).html(slotTwo);
-$($(".slot")[2]).html(slotThree);
-```
diff --git a/Waypoint-Build-JavaScript-Objects.md b/Waypoint-Build-JavaScript-Objects.md
deleted file mode 100644
index 13b62dc..0000000
--- a/Waypoint-Build-JavaScript-Objects.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Build JavaScript Objects
-Objects are similar to arrays, except that instead of using indexes to access and modify their data, you access the data in objects through what are called properties.
-
-Here's a sample object:
-
-```
-var cat = {
- "name": "Whiskers",
- "legs": 4,
- "tails": 1,
- "enemies": ["Water", "Dogs"]
-};
-```
-
-Objects are useful for storing data in a structured way, and can represents real world objects, like a cats.
diff --git a/Waypoint-Call-out-Optional-Actions-with-Button-Info.md b/Waypoint-Call-out-Optional-Actions-with-Button-Info.md
deleted file mode 100644
index 2d89eaa..0000000
--- a/Waypoint-Call-out-Optional-Actions-with-Button-Info.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Call out Optional Actions with Button Info
-Bootstrap comes with several pre-defined colors for buttons. The `btn-info` class is used to call attention to optional actions that the user can take. Note that these buttons still need the `btn` and`btn-block` classes.
-
-`<button class= "btn btn-block btn-info">Info</button>`
diff --git a/Waypoint-Center-Text-with-Bootstrap.md b/Waypoint-Center-Text-with-Bootstrap.md
deleted file mode 100644
index 2773247..0000000
--- a/Waypoint-Center-Text-with-Bootstrap.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Center Text with Bootstrap
-Now that we're using Bootstrap, we can center our heading elements to make them look better. All we need to do is add the class text-center to our h1 and h2 elements.
-
-Remember that you can add several classes to the same element by separating each of them with a space, like this: `<h2 class="text-red text-center">your text</h2>`.
diff --git a/Waypoint-Chaining-If-Else-Statements.md b/Waypoint-Chaining-If-Else-Statements.md
deleted file mode 100644
index 3ab49e8..0000000
--- a/Waypoint-Chaining-If-Else-Statements.md
+++ /dev/null
@@ -1,16 +0,0 @@
-#Waypoint: Chaining If Else Statements
-
-`if/else` statements can be chained together for complex logic. Here is `pseudocode` of multiple chained `if` / `else if` statements:
-
-```js
-if(condition1) {
-  statement1
-} else if (condition2) {
-  statement2
-} else if (condition3) {
-  statement3
-. . .
-} else {
-  statementN
-}
-```
diff --git a/Waypoint-Change-Text-Inside-an-Element-Using-jQuery.md b/Waypoint-Change-Text-Inside-an-Element-Using-jQuery.md
deleted file mode 100644
index eed3e3a..0000000
--- a/Waypoint-Change-Text-Inside-an-Element-Using-jQuery.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Change Text Inside an Element Using jQuery
-Using jQuery, you can change the text between the start and end tags of an element. You can even change HTML markup.
-
-jQuery has a function called `.html()` that lets you add HTML tags and text within an element. Any content previously within the element will be completely replaced with the content you provide using this function.
-
-Here's how you would rewrite and italicize the text of our heading:
-
-`$("h3").html("<i>jQuery Funhouse</i>");`
-
-jQuery also has a similar function called `.text()` that only alters text without adding tags. So when using `.html()` please remember that you will be editing the whole markup and not just the text.
diff --git a/Waypoint-Change-Text-with-Click-Events.md b/Waypoint-Change-Text-with-Click-Events.md
deleted file mode 100644
index f0aaf1b..0000000
--- a/Waypoint-Change-Text-with-Click-Events.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Change Text with Click Events
-When a click event happens, we can use Ajax to update an HTML element with the following code `$(".message").html("Here is the message");`
-
-This tells jQuery to use the class `message` as the selector and to that, change the HTML to have the string provide, we can also ass custom html elements wrapped in quotation marks.
diff --git a/Waypoint-Change-the-CSS-of-an-Element-Using-jQuery.md b/Waypoint-Change-the-CSS-of-an-Element-Using-jQuery.md
deleted file mode 100644
index 84d7143..0000000
--- a/Waypoint-Change-the-CSS-of-an-Element-Using-jQuery.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Change the CSS of an Element Using jQuery
-We can also change the CSS of an HTML element directly with jQuery.
-
-Query has a function called `.css()` that allows you to change the CSS of an element.
-
-```
-<script>
-  $(document).ready(function() {
-    $("#target1").css("color", "red");
-
-  });
-</script>
-```
diff --git a/Waypoint-Change-the-Color-of-Text.md b/Waypoint-Change-the-Color-of-Text.md
deleted file mode 100644
index 6ab7609..0000000
--- a/Waypoint-Change-the-Color-of-Text.md
+++ /dev/null
@@ -1,3 +0,0 @@
-CSS allows us to change  many styles. To change the color of an element we use `color`.
-
-Here's how you would set your h2 element's text color to blue: `<h2 style="color: blue">CatPhotoApp</h2>`.
\ No newline at end of file
diff --git a/Waypoint-Change-the-Font-Size-of-an-Element.md b/Waypoint-Change-the-Font-Size-of-an-Element.md
deleted file mode 100644
index ea468b1..0000000
--- a/Waypoint-Change-the-Font-Size-of-an-Element.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Font size is controlled by the `font-size` CSS attribute, like this: `h1 { font-size: 30px; }`.
-
-px is a unit that stands for [pixels](https://en.wikipedia.org/wiki/Pixel)
-
-Although this waypoint requires the use of px, there are [other units of size measurements used](http://www.w3.org/Style/Examples/007/units.en.html)
\ No newline at end of file
diff --git a/Waypoint-Check-Radio-Buttons-and-Checkboxes-by-Default.md b/Waypoint-Check-Radio-Buttons-and-Checkboxes-by-Default.md
deleted file mode 100644
index 145bee2..0000000
--- a/Waypoint-Check-Radio-Buttons-and-Checkboxes-by-Default.md
+++ /dev/null
@@ -1,3 +0,0 @@
-You can set a checkbox or radio button to be checked by default using the checked attribute.
-
-To do this, just add the word "checked" to the inside of an input element. For example, `<input type="radio" name="test-name" checked>`.
\ No newline at end of file
diff --git a/Waypoint-Check-the-Length-Property-of-a-String-Variable.md b/Waypoint-Check-the-Length-Property-of-a-String-Variable.md
deleted file mode 100644
index 0e964f5..0000000
--- a/Waypoint-Check-the-Length-Property-of-a-String-Variable.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Check the Length Property of a String Variable
-Data structures have properties. For example, strings have a property called `.length` that will tell you how many characters are in the string.
-
-`lastNameLength = lastName.length;`
diff --git a/Waypoint-Clone-an-Element-Using-jQuery.md b/Waypoint-Clone-an-Element-Using-jQuery.md
deleted file mode 100644
index adf36f3..0000000
--- a/Waypoint-Clone-an-Element-Using-jQuery.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Clone an Element Using jQuery
-jQuery has a function called`clone()` that makes a copy of an element.
-
-For example, if we wanted to copy target2 from our left-well to our right-well, we would use `$("#target2").clone().appendTo("#right-well");`
diff --git a/Waypoint-Comment-out-HTML.md b/Waypoint-Comment-out-HTML.md
deleted file mode 100644
index 3e1e82e..0000000
--- a/Waypoint-Comment-out-HTML.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Commenting is a way that you can leave comments within your code without affecting the code itself.
-
-It is also a convenient way to make code inactive without having to delete it entirely.
-
-You can start a comment with `<!-- and end a comment with -->`.
-
-```
-<!--
-<h1>Hello World</h1>
-
-<h2>CatPhotoApp</h2>
-
-<p>Hello Paragraph</p>
--->
-```
\ No newline at end of file
diff --git a/Waypoint-Comment-your-JavaScript-Code.md b/Waypoint-Comment-your-JavaScript-Code.md
deleted file mode 100644
index d799f5e..0000000
--- a/Waypoint-Comment-your-JavaScript-Code.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Comment your JavaScript Code
-Comments are a great way to leave notes to yourself and to other people who will later need to figure out what it does. Any code in it will be ignored.
-
-Let's take a look at the two ways you can write comments in JavaScript.
-- The double-slash comment will comment out the remainder of the text on the current line:
-
-`// This is a comment.`
-- The slash-star-star-slash comment will comment out everything between the `/*` and the `*/` characters:
-
-`/* This is also a comment */`
diff --git a/Waypoint-Comparison-With-The-Equality-Operator.md b/Waypoint-Comparison-With-The-Equality-Operator.md
deleted file mode 100644
index 527c70f..0000000
--- a/Waypoint-Comparison-With-The-Equality-Operator.md
+++ /dev/null
@@ -1,28 +0,0 @@
-##Waypoint: Comparison with the Equality Operator
-
-There are many `Comparison Operators` in JavaScript. All of these operators return a boolean `true` or `false` value.
-
-The most basic operator is the equality operator `==`. The equality operator compares two values and returns `true` if they're equivalent or `false` if they are not. Note that equality is different from assignment (=), which assigns the value at the right of the operator to a variable in the left.
-
-```js
-function equalityTest(myVal) {
-  if (myVal == 10) {
-     return "Equal";
-  }
-  return "Not Equal";
-}
-```
-
-If `myVal` is equal to `10`, the function will return "Equal". If it is not, the function will return "Not Equal".
-
-The equality operator will do its best to convert values for comparison, for example:
-
-```js
-   1   ==  1        // true
-  "1"  ==  1        // true
-   1   == '1'       // true
-   0   == false     // true
-   0   == null      // false
-   0   == undefined // false
- null  == undefined // true
-```
\ No newline at end of file
diff --git a/Waypoint-Comparison-With-The-Greater-Than-Equal-To-Operator.md b/Waypoint-Comparison-With-The-Greater-Than-Equal-To-Operator.md
deleted file mode 100644
index 9032b28..0000000
--- a/Waypoint-Comparison-With-The-Greater-Than-Equal-To-Operator.md
+++ /dev/null
@@ -1,14 +0,0 @@
-#Waypoint: Comparison with the Greater Than Equal To Operator
-
-The greater than equal to operator (`>=`) compares the values of two numbers. If the number to the left is greater than or equal to the number to the right, it returns `true`. Otherwise, it returns `false`.
-
-Like the equality operator, greater than equal to operator will convert data types while comparing.
-
-##Examples
-
-```js
- 6  >=  6  // true
- 7  >= '3' // true
- 2  >=  3  // false
-'7' >=  9  // false
-```
diff --git a/Waypoint-Comparison-With-The-Greater-Than-Operator.md b/Waypoint-Comparison-With-The-Greater-Than-Operator.md
deleted file mode 100644
index 60d95b8..0000000
--- a/Waypoint-Comparison-With-The-Greater-Than-Operator.md
+++ /dev/null
@@ -1,14 +0,0 @@
-#Waypoint: Comparison with the Greater Than Operator
-
-The greater than operator (`>`) compares the values of two numbers. If the number to the left is greater than the number to the right, it returns `true`. Otherwise, it returns `false`.
-
-Like the equality operator, greater than operator will convert data types of values while comparing.
-
-##Examples
-
-```js
- 5 > 3   // true
- 7 > '3' // true
- 2 > 3   // false
-'1' > 9  // false
-```
diff --git a/Waypoint-Comparison-With-The-Inequality-Operator.md b/Waypoint-Comparison-With-The-Inequality-Operator.md
deleted file mode 100644
index ab6ccb2..0000000
--- a/Waypoint-Comparison-With-The-Inequality-Operator.md
+++ /dev/null
@@ -1,13 +0,0 @@
-#Waypoint: Comparison with the Inequality Operator
-
-The inequality operator (`!=`) is the opposite of the equality operator. It means "Not Equal" and returns `false` where equality would return `true` and vice versa. Like the equality operator, the inequality operator will convert data types of values while comparing.
-
-##Examples
-
-```js
-1 != 2      // true
-1 != "1"    // false
-1 != '1'    // false
-1 != true   // false
-0 != false  // false
-```
\ No newline at end of file
diff --git a/Waypoint-Comparison-With-The-Less-Than-Equal-To-Operator.md b/Waypoint-Comparison-With-The-Less-Than-Equal-To-Operator.md
deleted file mode 100644
index b06cba0..0000000
--- a/Waypoint-Comparison-With-The-Less-Than-Equal-To-Operator.md
+++ /dev/null
@@ -1,13 +0,0 @@
-#Waypoint: Comparison with the Less Than Equal To Operator
-
-The less than equal to operator (`<=`) compares the values of two numbers. If the number to the left is less than or equal the number to the right, it returns `true`. If the number on the left is greater than the number on the right, it returns `false`. Like the equality operator, `less than equal to` converts data types.
-
-##Examples
-
-```js
-  4 <= 5  // true
-'7' <= 7  // true
-  5 <= 5  // true
-  3 <= 2  // false
-'8' <= 4  // false
-```
\ No newline at end of file
diff --git a/Waypoint-Comparison-With-The-Less-Than-Operator.md b/Waypoint-Comparison-With-The-Less-Than-Operator.md
deleted file mode 100644
index 1a64dfe..0000000
--- a/Waypoint-Comparison-With-The-Less-Than-Operator.md
+++ /dev/null
@@ -1,13 +0,0 @@
-#Waypoint: Comparison with the Less Than Operator
-
-The less than operator (`<`) compares the values of two numbers. If the number to the left is less than the number to the right, it returns `true`. Otherwise, it returns `false`. Like the equality operator, less than operator converts data types while comparing.
-
-##Examples
-
-```js
-  2 < 5  // true
-'3' < 7  // true
-  5 < 5  // false
-  3 < 2  // false
-'8' < 4  // false
-```
diff --git a/Waypoint-Comparison-With-The-Strict-Equality-Operator.md b/Waypoint-Comparison-With-The-Strict-Equality-Operator.md
deleted file mode 100644
index 03a3f3d..0000000
--- a/Waypoint-Comparison-With-The-Strict-Equality-Operator.md
+++ /dev/null
@@ -1,12 +0,0 @@
-#Waypoint: Comparison with the Strict Equality Operator
-
-Strict equality (`===`) is the counterpart to the equality operator (`==`). Unlike the equality operator, strict equality tests both the `type` and `value` of the compared elements.
-
-##Examples
-
-```js
-3 === 3   // true
-3 === '3' // false
-```
-
-*In the second example, `3` is a `Number` type and `'3'` is a `String` type.*
\ No newline at end of file
diff --git a/Waypoint-Comparison-With-The-Strict-Inequality-Operator.md b/Waypoint-Comparison-With-The-Strict-Inequality-Operator.md
deleted file mode 100644
index e1227f5..0000000
--- a/Waypoint-Comparison-With-The-Strict-Inequality-Operator.md
+++ /dev/null
@@ -1,11 +0,0 @@
-#Waypoint: Comparison with the Strict Inequality Operator
-
-The strict inequality operator (`!==`) is the opposite of the strict equality operator. It means "Strictly Not Equal" and returns `false` where strict equality would return `true` and vice versa. Strict inequality will not convert data types.
-
-##Examples
-
-```js
-3 !== 3   // false
-3 !== '3' // true
-4 !== 3   // true
-```
diff --git a/Waypoint-Comparisons-With-The-Logical-And-Operator.md b/Waypoint-Comparisons-With-The-Logical-And-Operator.md
deleted file mode 100644
index a9e7a93..0000000
--- a/Waypoint-Comparisons-With-The-Logical-And-Operator.md
+++ /dev/null
@@ -1,23 +0,0 @@
-#Waypoint: Comparisons with the Logical And Operator
-
-Sometimes you will need to test more than one thing at a time. The `logical and` operator (`&&`) returns `true` if and only if the `operands` to the left and right of it are true.
-
-The same effect could be achieved by nesting an if statement inside another if:
-
-```js
-if (num > 5) {
-  if (num < 10) {
-    return "Yes";
-  }
-}
-return "No";
-```
-
-will only return "Yes" if `num` is between `6` and `9` (6 and 9 included). The same logic can be written as:
-
-```js
-if (num > 5 && num < 10) {
-  return "Yes";
-}
-return "No";
-```
\ No newline at end of file
diff --git a/Waypoint-Comparisons-With-The-Logical-Or-Operator.md b/Waypoint-Comparisons-With-The-Logical-Or-Operator.md
deleted file mode 100644
index c51f6eb..0000000
--- a/Waypoint-Comparisons-With-The-Logical-Or-Operator.md
+++ /dev/null
@@ -1,24 +0,0 @@
-#Waypoint: Comparisons with the Logical Or Operator
-
-The `logical or` operator (`||`) returns `true` if either of the `operands` is `true`. Otherwise, it returns `false`.
-
-The pattern below should look familiar from prior waypoints:
-
-```js
-if (num > 10) {
-  return "No";
-}
-if (num < 5) {
-    return "No";
-}
-return "Yes";
-```
-
-will return "Yes" only if `num` is between `5` and `10` (5 and 10 included). The same logic can be written as:
-
-```js
-if (num > 10 || num < 5) {
-  return "No";
-}
-return "Yes";
-```
\ No newline at end of file
diff --git a/Waypoint-Concatenate-Strings-with-.concat.md b/Waypoint-Concatenate-Strings-with-.concat.md
deleted file mode 100644
index 6470124..0000000
--- a/Waypoint-Concatenate-Strings-with-.concat.md
+++ /dev/null
@@ -1,3 +0,0 @@
-`.concat()` can be used to merge the contents of two arrays into one.
-
-`array = array.concat(otherArray);`
diff --git a/Waypoint-Concatenating-Strings-with-Plus-Operator.md b/Waypoint-Concatenating-Strings-with-Plus-Operator.md
deleted file mode 100644
index a1c6178..0000000
--- a/Waypoint-Concatenating-Strings-with-Plus-Operator.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Concatenating Strings with Plus Operator
-In JavaScript, when the `+` operator is used with a String value, it is called the `concatenation` operator. You can build a new string out of other strings by concatenating them together.
-
-## Example
-`'My name is Alan,' + ' I concatenate.'`
-
-## Note
-Watch out for spaces. Concatenation does not add spaces between concatenated strings, so you'll need to add them yourself.
diff --git a/Waypoint-Concatenating-Strings-with-the-Plus-Equals-Operator.md b/Waypoint-Concatenating-Strings-with-the-Plus-Equals-Operator.md
deleted file mode 100644
index 380c352..0000000
--- a/Waypoint-Concatenating-Strings-with-the-Plus-Equals-Operator.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Concatenating Strings with the Plus Equals Operator
-We can use the `+=` operator to concatenate a string onto the end of an existing string variable. This can be very helpful to break a long string over several lines.
-
-## Note
-Watch out for spaces. Concatenation does not add spaces between concatenated strings, so you'll need to add them yourself.
-
-## Example
-
-```js
-var ourStr = "I come first. ";
-ourStr += "I come second.";
-```
diff --git a/Waypoint-Condense-arrays-with-reduce.md b/Waypoint-Condense-arrays-with-reduce.md
deleted file mode 100644
index b7ef793..0000000
--- a/Waypoint-Condense-arrays-with-reduce.md
+++ /dev/null
@@ -1,13 +0,0 @@
-Reduce can be useful for condensing an array of numbers into one value.
-
-```
-var array = [4,5,6,7,8];
-var singleVal = 0;
-// Only change code below this line.
-
-var singleVal = array.reduce(function(previousVal, currentVal){
-
-  return previousVal+currentVal;
-
-});
-```
\ No newline at end of file
diff --git a/Waypoint-Construct-JavaScript-Objects-with-Functions.md b/Waypoint-Construct-JavaScript-Objects-with-Functions.md
deleted file mode 100644
index 4d61f56..0000000
--- a/Waypoint-Construct-JavaScript-Objects-with-Functions.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## Construct JavaScript Objects with Functions
-Using constructors it is easy to create new objects using a blueprint or constructor. The declaration syntax is a little different but still easy to remember.
-
-```
-// Let's add the properties engines and seats to the car in the same way that the property wheels has been added below. They should both be numbers.
-var Car = function() {
-  this.wheels = 4;
-  this.engines = 1;
-  this.seats = 1;
-};
-
-var myCar = new Car();
-```
\ No newline at end of file
diff --git a/Waypoint-Constructing-Strings-with-Variables.md b/Waypoint-Constructing-Strings-with-Variables.md
deleted file mode 100644
index dbc92be..0000000
--- a/Waypoint-Constructing-Strings-with-Variables.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Constructing Strings with Variables
-Sometimes you will need to build a string, [Mad Libs](https://en.wikipedia.org/wiki/Mad_Libs) style. By using the concatenation operator `+`, you can insert one or more variables into a string you're building.
-
-## Example
-
-```js
-var ourName = "Free Code Camp";
-var ourStr = "Hello, our name is " + ourName + ", how are you?";
-```
diff --git a/Waypoint-Convert-JSON-Data-to-HTML.md b/Waypoint-Convert-JSON-Data-to-HTML.md
deleted file mode 100644
index b8ff62a..0000000
--- a/Waypoint-Convert-JSON-Data-to-HTML.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Convert JSON Data to HTML
-Once you know how to get data from the JSON call then is time to learn how to iterate through it. We can use the .map() method to loop through our data and modify our HTML elements.
-
-Here is a code that does that:
-
-```js
-// calling map on the json variable and using a custom callback function.
-json.map(function(val) {
-
-  // Adding each object keys
-  var keys = Object.keys(val);
-  // Generating new html
-  html += "<div class = 'cat'>";
-  // Adding the custom html to each key
-  keys.map(function(key) {
-
-    html += "<b>" + key + "</b>: " + val[key] + "<br>";
-
-  });
-
-  html += "</div><br>";
-
-});
-```
diff --git a/Waypoint-Count-Backwards-With-a-For-Loop.md b/Waypoint-Count-Backwards-With-a-For-Loop.md
deleted file mode 100644
index 2c219b0..0000000
--- a/Waypoint-Count-Backwards-With-a-For-Loop.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Count Backwards With a For Loop
-A for loop can also count backwards, so long as we can define the right conditions.
-
-In order to count backwards by twos, we'll need to change our `initialization`, `condition`, and `final-expression`.
-
-We'll start at `i = 10` and loop while `i > 0`. We'll decrement `i` by `2` each loop with `i -= 2`.
-
-```js
-var ourArray = [];
-
-for(var i = 10; i > 0; i -= 2) {
-
-  ourArray.push(i);
-
-}
-```
-
-ourArray will now contain `[10,8,6,4,2]`
diff --git a/Waypoint-Create-Bootstrap-Wells.md b/Waypoint-Create-Bootstrap-Wells.md
deleted file mode 100644
index 7da9ee4..0000000
--- a/Waypoint-Create-Bootstrap-Wells.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Create Bootstrap Wells
-Bootstrap has a class called `well` that can create a visual sense of depth for your columns.
-
-Nest one div element with the class well within each of your `col-xs-6 div` elements.
-
-```
-<div class="container-fluid">
-  <h3 class="text-primary text-center">jQuery Playground</h3>
-  <div class="row">
-    <div class="col-xs-6">
-      <div class="well">
-
-
-
-      </div>
-    </div>
-    <div class="col-xs-6">
-      <div class="well">
-
-
-
-      </div>
-    </div>
-  </div>
-</div>
-```
diff --git a/Waypoint-Create-Decimal-Numbers-with-JavaScript.md b/Waypoint-Create-Decimal-Numbers-with-JavaScript.md
deleted file mode 100644
index 00e9f37..0000000
--- a/Waypoint-Create-Decimal-Numbers-with-JavaScript.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Create Decimal Numbers with JavaScript
-JavaScript number variables can have decimals. `var myDecimal = 2.8;`
diff --git a/Waypoint-Create-a-Block-Element-Bootstrap-Button.md b/Waypoint-Create-a-Block-Element-Bootstrap-Button.md
deleted file mode 100644
index ae78f23..0000000
--- a/Waypoint-Create-a-Block-Element-Bootstrap-Button.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Create a Block Element Bootstrap Button
-Normally, your button elements are only as wide as the text that they contain. By making them block elements, your button will stretch to fill your page's entire horizontal space. Note that these buttons still need the `btn` class.
-
-`<button class="btn btn-block">Like</button>`
diff --git a/Waypoint-Create-a-Bootstrap-Button.md b/Waypoint-Create-a-Bootstrap-Button.md
deleted file mode 100644
index 1f1ef74..0000000
--- a/Waypoint-Create-a-Bootstrap-Button.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Create a Bootstrap Button
-Bootstrap has its own styles for button elements, which look much better than the plain HTML ones.
-
-`<button type="submit" class="btn">Like</button>`
diff --git a/Waypoint-Create-a-Bootstrap-Headline.md b/Waypoint-Create-a-Bootstrap-Headline.md
deleted file mode 100644
index 59d104b..0000000
--- a/Waypoint-Create-a-Bootstrap-Headline.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Create a Bootstrap Headline
-`<h3 class="text-primary text-center"> jQuery Playground </h3>`
diff --git a/Waypoint-Create-a-Bootstrap-Row.md b/Waypoint-Create-a-Bootstrap-Row.md
deleted file mode 100644
index 2bf1951..0000000
--- a/Waypoint-Create-a-Bootstrap-Row.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Create a Bootstrap Row
-Create a div element with the class row. `<div class="row"></div>`
diff --git a/Waypoint-Create-a-Bulleted-Unordered-List.md b/Waypoint-Create-a-Bulleted-Unordered-List.md
deleted file mode 100644
index 2bcb687..0000000
--- a/Waypoint-Create-a-Bulleted-Unordered-List.md
+++ /dev/null
@@ -1,14 +0,0 @@
-HTML has a special element for creating unordered lists, or bullet point-style lists.
-
-Unordered lists start with a `<ul>` element. Then they contain some number of `<li>` elements.
-
-For example:
-
-```
-<ul>
-  <li>milk</li>
-  <li>cheese</li>
-</ul>
-```
-
-would create a bullet point-style list of "milk" and "cheese".
\ No newline at end of file
diff --git a/Waypoint-Create-a-Class-to-Target-with-jQuery-Selectors.md b/Waypoint-Create-a-Class-to-Target-with-jQuery-Selectors.md
deleted file mode 100644
index 71e9322..0000000
--- a/Waypoint-Create-a-Class-to-Target-with-jQuery-Selectors.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Create a Class to Target with jQuery Selectors
-Not every class needs to have corresponding CSS. Sometimes we create classes just for the purpose of selecting these elements more easily using jQuery.
-
-For this we use the `target` class on the `button` elements.
diff --git a/Waypoint-Create-a-Custom-Heading.md b/Waypoint-Create-a-Custom-Heading.md
deleted file mode 100644
index 9ed88bb..0000000
--- a/Waypoint-Create-a-Custom-Heading.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Create a Custom Heading
-Using `div` and the custom grid layout we can create our own heading.
-
-```
-<div class="row">
-   <div class="col-xs-8">
-     <h2 class="text-primary text-center">CatPhotoApp</h2>
-   </div>
-   <div class="col-xs-4">
-     <a href="#"><img class="img-responsive thick-green-border" src="https://bit.ly/fcc-relaxing-cat"></a>
-   </div>
-```
diff --git a/Waypoint-Create-a-Form-Element.md b/Waypoint-Create-a-Form-Element.md
deleted file mode 100644
index 5215e88..0000000
--- a/Waypoint-Create-a-Form-Element.md
+++ /dev/null
@@ -1,3 +0,0 @@
-You can build web forms that actually submit data to a server using nothing more than pure HTML. You can do this by specifying an action on your `form` element. 
-
-For example: `<form action="/url-where-you-want-to-submit-form-data"></form>`.
\ No newline at end of file
diff --git a/Waypoint-Create-a-JavaScript-Slot-Machine.md b/Waypoint-Create-a-JavaScript-Slot-Machine.md
deleted file mode 100644
index 0e4dd61..0000000
--- a/Waypoint-Create-a-JavaScript-Slot-Machine.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Create a JavaScript Slot Machine
-For this we have to generate three random numbers using the formula they give us and not the general one. `Math.floor(Math.random() * (3 - 1 + 1)) + 1;`
-
-```
-slotOne = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
-slotTwo = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
-slotThree = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
-```
diff --git a/Waypoint-Create-a-Set-of-Checkboxes.md b/Waypoint-Create-a-Set-of-Checkboxes.md
deleted file mode 100644
index 9315061..0000000
--- a/Waypoint-Create-a-Set-of-Checkboxes.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Checkboxes are a type of input.
-- Each of your checkboxes should be nested within its own label element.
-- All related checkbox inputs should have the same name attribute.
-
-Here's an example of a checkbox: `<label><input type="checkbox" name="personality"> Loving</label>`.
\ No newline at end of file
diff --git a/Waypoint-Create-a-Set-of-Radio-Buttons.md b/Waypoint-Create-a-Set-of-Radio-Buttons.md
deleted file mode 100644
index f9a5d00..0000000
--- a/Waypoint-Create-a-Set-of-Radio-Buttons.md
+++ /dev/null
@@ -1,5 +0,0 @@
-You can use radio buttons for questions where you want the user to only give you one answer.
-
-Radio buttons are a type of input. They should all be nested in their own label element. Furthermore, all related radio buttons should have the same name attribute.
-
-Here's an example of a radio button: `<label><input type="radio" name="indoor-outdoor"> Indoor</label>`.
\ No newline at end of file
diff --git a/Waypoint-Create-a-Text-Field.md b/Waypoint-Create-a-Text-Field.md
deleted file mode 100644
index 4d56cfd..0000000
--- a/Waypoint-Create-a-Text-Field.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Text inputs are a convenient way to get input from your user.
-
-You can create one like this: `<input type="text">`. Note that input elements are self-closing.
\ No newline at end of file
diff --git a/Waypoint-Create-an-Ordered-List.md b/Waypoint-Create-an-Ordered-List.md
deleted file mode 100644
index f84e03f..0000000
--- a/Waypoint-Create-an-Ordered-List.md
+++ /dev/null
@@ -1,14 +0,0 @@
-HTML has a special element for creating ordered lists, or numbered-style lists.
-
-Ordered lists start with a `<ol>` element. Then they contain some number of `<li>` elements.
-
-For example:
-
-```
-<ol>
-  <li>hydrogen</li>
-  <li>helium</li>
-</ol>
-```
-
-would create a numbered list of "hydrogen" and "helium".
\ No newline at end of file
diff --git a/Waypoint-Declare-JavaScript-Objects-as-Variables.md b/Waypoint-Declare-JavaScript-Objects-as-Variables.md
deleted file mode 100644
index 7cd2e80..0000000
--- a/Waypoint-Declare-JavaScript-Objects-as-Variables.md
+++ /dev/null
@@ -1,12 +0,0 @@
-## Declare JavaScript Objects as Variables
-
-This has a simple format. You declare your variable and have it equal to an object in the form `{ key: value}`
-
-```
-var car = {
-  "wheels":4,
-  "engines":1,
-  "seats":5
-};
-```
-
diff --git a/Waypoint-Declare-JavaScript-Variables.md b/Waypoint-Declare-JavaScript-Variables.md
deleted file mode 100644
index 87bcd44..0000000
--- a/Waypoint-Declare-JavaScript-Variables.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Declare JavaScript Variables
-When we store data in a data structure, we call it a variable. JavaScript variables are written in `camel case`. An example of camel case is: `camelCase`.
-
-You can declare a variable this way `var myName = "Rafael";`
diff --git a/Waypoint-Declare-String-Variables.md b/Waypoint-Declare-String-Variables.md
deleted file mode 100644
index 6ecca2a..0000000
--- a/Waypoint-Declare-String-Variables.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Declare String Variables
-A String variable. It is nothing more than a "string" of characters. JavaScript strings are always wrapped in quotes.
-
-`var myFirstName = 'Rafael';`
diff --git a/Waypoint-Decrement-a-Number-with-Javascript.md b/Waypoint-Decrement-a-Number-with-Javascript.md
deleted file mode 100644
index 47d410f..0000000
--- a/Waypoint-Decrement-a-Number-with-Javascript.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Decrement a Number with Javascript
-You can easily decrement or decrease a variable by `1` with the `--` operator.
-
-`i--;`
-
-is the equivalent of
-
-`i = i - 1;`
-
-**Note:** The entire line becomes `i--;`, eliminating the need for the equal sign.
diff --git a/Waypoint-Delete-HTML-Elements.md b/Waypoint-Delete-HTML-Elements.md
deleted file mode 100644
index 133e867..0000000
--- a/Waypoint-Delete-HTML-Elements.md
+++ /dev/null
@@ -1 +0,0 @@
-Deleting elements is very simple. All you have to do is remove everything from the opening to the closing of the element and it will be removed. No extra code is needed.
\ No newline at end of file
diff --git a/Waypoint-Delete-Properties-from-a-JavaScript-Object.md b/Waypoint-Delete-Properties-from-a-JavaScript-Object.md
deleted file mode 100644
index 2b59233..0000000
--- a/Waypoint-Delete-Properties-from-a-JavaScript-Object.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Delete Properties from a JavaScript Object
-We can also delete properties from objects like this:
-
-```js
-delete ourDog.bark;
-```
-
-The **delete operator** removes a property from an object.
-
-### Syntax
-`delete expression` where expression should evaluate to a property reference, e.g.:
-
-```js
-delete object.property
-delete object['property']
-```
-
-### Parameters
-**object**  The name of an object, or an expression evaluating to an object.
-
- **property**   The property to delete.
-
-### Return value
-Throws in [strict](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode) mode if the property is an own non-configurable property (returns false in non-strict). Returns true in all other cases.
-
-[Read more](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete)
diff --git a/Waypoint-Delete-your-jQuery-Functions.md b/Waypoint-Delete-your-jQuery-Functions.md
deleted file mode 100644
index 97979c1..0000000
--- a/Waypoint-Delete-your-jQuery-Functions.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Delete your jQuery Functions
-To delete the functions it is just as any other piece of code that you want to remove, select it and delete with the keyboard.
diff --git a/Waypoint-Disable-an-Element-Using-jQuery.md b/Waypoint-Disable-an-Element-Using-jQuery.md
deleted file mode 100644
index 9bade9b..0000000
--- a/Waypoint-Disable-an-Element-Using-jQuery.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Disable an Element Using jQuery
-You can also change the non-CSS properties of HTML elements with jQuery. For example, you can disable buttons.
-
-When you disable a button, it will become grayed-out and can no longer be clicked.
-
-jQuery has a function called `.prop()` that allows you to adjust the properties of elements.
-
-Here's how you would disable all buttons: `$('#button').prop('disabled', true);`
diff --git a/Waypoint-Ditch-Custom-CSS-for-Bootstrap.md b/Waypoint-Ditch-Custom-CSS-for-Bootstrap.md
deleted file mode 100644
index 87ca2d0..0000000
--- a/Waypoint-Ditch-Custom-CSS-for-Bootstrap.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Ditch Custom CSS for Bootstrap
-We can clean up our code and make our Cat Photo App look more conventional by using Bootstrap's built-in styles instead of the custom styles we created earlier.
-
-All you need to know is the built in [classes](http://getbootstrap.com/css/).
diff --git a/Waypoint-Divide-One-Number-by-Another-with-JavaScript.md b/Waypoint-Divide-One-Number-by-Another-with-JavaScript.md
deleted file mode 100644
index cd04527..0000000
--- a/Waypoint-Divide-One-Number-by-Another-with-JavaScript.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Divide One Number by Another with JavaScript
-JavaScript uses use the `/` symbol for division. `var quotient = 66 / 33;`
diff --git a/Waypoint-Escape-Sequences-in-Strings.md b/Waypoint-Escape-Sequences-in-Strings.md
deleted file mode 100644
index 66748a5..0000000
--- a/Waypoint-Escape-Sequences-in-Strings.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Escape Sequences in Strings
-Quotes are not the only characters that can be escaped inside a string. Here is a table of common escape sequences:
-
-**Code** | **Output**
--------- | ---------------
-\'       | single quote
-\"       | double quote
-\\       | backslash
-\n       | new line
-\r       | carriage return
-\t       | tab
-\b       | backspace
-\f       | form feed
-
-_Note that the backslash itself must be escaped in order to display as a backslash._
diff --git a/Waypoint-Escaping-Literal-Quotes-in-Strings.md b/Waypoint-Escaping-Literal-Quotes-in-Strings.md
deleted file mode 100644
index 7234376..0000000
--- a/Waypoint-Escaping-Literal-Quotes-in-Strings.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Escaping Literal Quotes in Strings
-In JavaScript, you can escape a quote from considering it as an end of string quote by placing a backslash `\` in front of the quote.
-
-`"Alan said, \"Peter is learning JavaScript\"."`
-
-This signals JavaScript that the following quote is not the end of the string, but should instead appear inside the string.
-
-However another option is to alternate quotation marks if possible.  `'Alan said, "Peter is learning JavaScript"'` this would also work.
diff --git a/Waypoint-Fill-in-the-Blank-with-Placeholder-Text.md b/Waypoint-Fill-in-the-Blank-with-Placeholder-Text.md
deleted file mode 100644
index b3f335c..0000000
--- a/Waypoint-Fill-in-the-Blank-with-Placeholder-Text.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Web developers traditionally use **lorem ipsum** text as placeholder text. It's called lorem ipsum text because those are the first two words of a famous passage by Cicero of Ancient Rome.
-
-**lorem ipsum** text has been used as placeholder text by typesetters since the 16th century, and this tradition continues on the web.
-
-```
-<h1>Hello World</h1>
-
-<h2>CatPhotoApp</h2>
-
-<p>Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.</p>
-```
\ No newline at end of file
diff --git a/Waypoint-Filter-Arrays-with-filter.md b/Waypoint-Filter-Arrays-with-filter.md
deleted file mode 100644
index cd1807a..0000000
--- a/Waypoint-Filter-Arrays-with-filter.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Filter is a useful method that can filter out values that don't match a certain criteria.
-
-```
-var array = [1,2,3,4,5,6,7,8,9,10];
-  // Only change code below this line.
-array = array.filter(function(val) {
-  return val <= 5;
-});
-```
\ No newline at end of file
diff --git a/Waypoint-Find-Numbers-with-Regular-Expressions.md b/Waypoint-Find-Numbers-with-Regular-Expressions.md
deleted file mode 100644
index 600eb52..0000000
--- a/Waypoint-Find-Numbers-with-Regular-Expressions.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Find Numbers with Regular Expressions
-We can use special selectors in Regular Expressions to select a particular type of value.
-
-One such selector is the digit selector `\d` which is used to grab the numbers in a string.
-
-It is used like this: `/\d+/g`.
diff --git a/Waypoint-Find-White-Space-with-Regular-Expressions.md b/Waypoint-Find-White-Space-with-Regular-Expressions.md
deleted file mode 100644
index 02ff6af..0000000
--- a/Waypoint-Find-White-Space-with-Regular-Expressions.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Find White Space with Regular Expressions
-We can also use selectors like`\s` to find spaces in a string.
-
-It is used like this:
-
-`/\s+/g`
diff --git a/Waypoint-Find-the-Length-of-a-String.md b/Waypoint-Find-the-Length-of-a-String.md
deleted file mode 100644
index 8a9c91d..0000000
--- a/Waypoint-Find-the-Length-of-a-String.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Find the Length of a String
-You can find the _length_ of a String value by writing `.length` after the string variable or string literal.
-
-`"Alan Peter".length; // 10`
-
-For example, if we created a variable `var firstName = "Charles"`, we could find out how long the string "Charles" is by using the `firstName.length` property.
diff --git a/Waypoint-Finding-a-Remainder-in-Javascript.md b/Waypoint-Finding-a-Remainder-in-Javascript.md
deleted file mode 100644
index 448d310..0000000
--- a/Waypoint-Finding-a-Remainder-in-Javascript.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Finding a Remainder in Javascript
-The _remainder operator_ `%` gives the remainder of the division of two numbers.
-
-## Example
-
-```
-5 % 2 = 1 because
-Math.floor(5 / 2) = 2 (Quotient)
-2 * 2 = 4
-5 - 4 = 1 (Remainder)
-```
-
-## Usage
-In mathematics, a number can be checked even or odd by checking the remainder of the division of the number by 2.
-
-```
-17 % 2 = 1 (17 is Odd)
-48 % 2 = 0 (48 is Even)
-```
-
-**Note** Do not confuse it with _modulus_ `%` does not work well with negative numbers.
diff --git a/Waypoint-Generate-Random-Fractions-with-JavaScript.md b/Waypoint-Generate-Random-Fractions-with-JavaScript.md
deleted file mode 100644
index a59e6c9..0000000
--- a/Waypoint-Generate-Random-Fractions-with-JavaScript.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generate Random Fractions with JavaScript
-JavaScript has a `Math.random()` function that generates a random decimal number.
diff --git a/Waypoint-Generate-Random-Whole-Numbers-with-JavaScript.md b/Waypoint-Generate-Random-Whole-Numbers-with-JavaScript.md
deleted file mode 100644
index 06728b3..0000000
--- a/Waypoint-Generate-Random-Whole-Numbers-with-JavaScript.md
+++ /dev/null
@@ -1,5 +0,0 @@
-It's great that we can create random decimal numbers, but it's even more useful if we lot more useful to generate a random whole number.
-
-To achieve this we can multiply the random number by ten and use the `Math.floor()` to convert the decimal number to a whole number
-
-`Math.floor(Math.random()*10)`
\ No newline at end of file
diff --git a/Waypoint-Generate-Random-Whole-Numbers-within-a-Range.md b/Waypoint-Generate-Random-Whole-Numbers-within-a-Range.md
deleted file mode 100644
index b338c00..0000000
--- a/Waypoint-Generate-Random-Whole-Numbers-within-a-Range.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Generate Random Whole Numbers within a Range
-> We can use a certain mathematical expression to get a random number between two numbers.
-
-`Math.floor(Math.random() * (max - min + 1)) + min`
-
-**See Also:** :scroll: [**Explanation**](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Waypoint-Generate-Random-Whole-Numbers-within-a-Range#explanation) | [Explanation in SO](https://stackoverflow.com/questions/1527803/generating-random-numbers-in-javascript-in-a-specific-range/1527820#1527820)
-
-## Explanation
-> `Math.random()` creates a floating point number between `0` (inclusive) and `1` (exclusive)
-
-**Q:** Create a random **whole** number between `2` (inclusive, min) and `6` (inclusive, max) i.e. create a random *whole* number between `min` (*inclusive*) and max (*inclusive*)
-
-**A:** `Math.floor(Math.random() * (6 - 2 + 1)) + 2`
-
-Let's write `Math.random() * max` which creates a floating point number between `0` (inclusive) and `max` (*exclusive*).
-
-E.g. `Math.random() * 6` generates a random floating point number between `0` (inclusive) and `6` (*exclusive*).
-
-----
-
-But we need to generate a whole number between `0` (*inclusive*) and `max` (*inclusive*) first. So we do a trick :wink:. 
-
-What if we create a number between `0` and `max + 1`. That way, we also include the `max` number. And then apply the `Math.floor` method on the result to get a whole number between **`0`** (*inclusive*, min) and `max` (*inclusive*).
-
-We can write it as `Math.floor(Math.random() * (max + 1))`. 
-
-E.g. `Math.floor(Math.random() * (6 + 1))` generates a random floating point number between **`0`** (*inclusive*, min) and **`6`** (*inclusive*, max).
-
-**`0 1 2 3 4 5 6`**
-
-> The `Math.random() * (6 + 1)` part generates a floating point number between `0` (*inclusive*) and `7` (*exclusive*).
-
-**`0..1..2..3..4..5..6..`**
-
-----
-
-But that doesn't solve our given question yet :disappointed:. We need to generate a random whole number between **`min`** (*inclusive*) and `max` (*inclusive*). So we need another trick :wink:. 
-
-What if we write `Math.floor(Math.random() * ((max + 1) - min))` that will generate a whole number between `0` and `(max + 1) - min`.
-
-E.g. `Math.floor(Math.random() * ((6 + 1) - 2))` **=** `Math.floor(Math.random() * 5)` that will generate a whole number between `0` (inclusive) and `4` (inclusive).
-
-**`0 1 2 3 4`**
-
-----
-
-But still the question is unsolved :disappointed:. We need the random number between `min` (**inclusive**) and `max` (**inclusive**).
-
-So we simply write `Math.floor(Math.random() * ((max + 1) - min)) + min` :stuck_out_tongue_winking_eye:. 
-
-E.g. `Math.floor(Math.random() * ((6 + 1) - 2)) + 2` **=** `Math.floor(Math.random() * 5) + 2`
-
-**`2 3 4 5 6`**
-
-**Now this answers our given question. `Math.floor(Math.random() * (max - min + 1) + min` correctly generates a random number between `min` (*inclusive*) and `max` (*inclusive*) i.e. it generates a random whole number between `2` (inclusive) and `6` (inclusive).** :smiley:
\ No newline at end of file
diff --git a/Waypoint-Get-Geo-location-Data.md b/Waypoint-Get-Geo-location-Data.md
deleted file mode 100644
index 01313cb..0000000
--- a/Waypoint-Get-Geo-location-Data.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## Get Geo-location Data
-Every browser has a built in navigator that can give us this information.
-
-The navigator will get our user's current longitude and latitude.
-
-You will see a prompt to allow or block this site from knowing your current location. The challenge can be completed either way, as long as the code is correct.
-
-By selecting allow you will see the text on the output phone change to your latitude and longitude
-
-Here's some code that does this:
-
-```js
-if (navigator.geolocation) {
-
-  navigator.geolocation.getCurrentPosition(function(position) {
-
-    $("#data").html("latitude: " + position.coords.latitude + "<br>longitude: " + position.coords.longitude);
-
-  });
-
-}
-```
diff --git a/Waypoint-Get-JSON-with-the-jQuery-getJSON-Method.md b/Waypoint-Get-JSON-with-the-jQuery-getJSON-Method.md
deleted file mode 100644
index ad63e0a..0000000
--- a/Waypoint-Get-JSON-with-the-jQuery-getJSON-Method.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Get JSON with the jQuery getJSON Method
-Application Programming Interfaces - are tools that computers use to communicate with one another.
-
-Most web APIs transfer data in a format called JSON. JSON stands for JavaScript Object Notation. JSON is nothing more than object properties and their current values, sandwiched between a `{` and a `}`.
-
-These properties and their values are often referred to as "key-value pairs".
-
-Here is a sample of what it looks like.
-
-```js
-$.getJSON("/json/cats.json", function(json) {
-
-   $(".message").html(JSON.stringify(json));
-
- });
-```
diff --git a/Waypoint-Give-Each-Element-a-Unique-ID.md b/Waypoint-Give-Each-Element-a-Unique-ID.md
deleted file mode 100644
index 0f7d860..0000000
--- a/Waypoint-Give-Each-Element-a-Unique-ID.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Give Each Element a Unique ID
-We will also want to be able to use jQuery to target each button by its unique id. So we add an unique id to each button.
diff --git a/Waypoint-Give-a-Background-Color-to-a-Div-Element.md b/Waypoint-Give-a-Background-Color-to-a-Div-Element.md
deleted file mode 100644
index 44ff8d4..0000000
--- a/Waypoint-Give-a-Background-Color-to-a-Div-Element.md
+++ /dev/null
@@ -1,3 +0,0 @@
-You can set an element's background color with the `background-color` attribute.
-
-For example, if you wanted an element's background color to be green, you'd use `.green-background { background-color: green; }` within your `style` element.
\ No newline at end of file
diff --git a/Waypoint-Give-your-JavaScript-Slot-Machine-some-stylish-images.md b/Waypoint-Give-your-JavaScript-Slot-Machine-some-stylish-images.md
deleted file mode 100644
index 019eadd..0000000
--- a/Waypoint-Give-your-JavaScript-Slot-Machine-some-stylish-images.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Give your JavaScript Slot Machine some stylish images
-We've already set up the images for you in an array called images. We can use different indexes to grab each of these.
-
-Here's how we would set the first slot to show a different image depending on which number its random number generates:
-
-`$($('.slot')[0]).html('<img src = "' + images[slotOne-1] + '">');`
diff --git a/Waypoint-Global-Scope-And-Functions.md b/Waypoint-Global-Scope-And-Functions.md
deleted file mode 100644
index 144a791..0000000
--- a/Waypoint-Global-Scope-And-Functions.md
+++ /dev/null
@@ -1,5 +0,0 @@
-#Waypoint: Global Scope and Functions
-
-In JavaScript, `scope` refers to the visibility of variables. Variables which are defined outside of a function block have `Global` scope. This means, they can be seen everywhere in your JavaScript code.
-
-Variables which are used without the `var` keyword are automatically created in the `global` scope. This can create unintended consequences elsewhere in your code or when running a function again. You should always declare your variables with `var`.
\ No newline at end of file
diff --git a/Waypoint-Global-Vs-Local-Scope-In-Functions.md b/Waypoint-Global-Vs-Local-Scope-In-Functions.md
deleted file mode 100644
index 090b01d..0000000
--- a/Waypoint-Global-Vs-Local-Scope-In-Functions.md
+++ /dev/null
@@ -1,15 +0,0 @@
-#Waypoint: Global vs Local Scope in Functions
-
-It is possible to have both `local` and `global` variables with the same name. When you do this, the local variable takes precedence over the `global` variable.
-
-In this example:
-
-```js
-var someVar = "Hat";
-function myFun() {
-  var someVar = "Head";
-  return someVar;
-}
-```
-
-The function `myFun` will return `"Head"` because the `local` version of the variable is present.
\ No newline at end of file
diff --git a/Waypoint-Headline-with-the-h2-Element.md b/Waypoint-Headline-with-the-h2-Element.md
deleted file mode 100644
index 2725593..0000000
--- a/Waypoint-Headline-with-the-h2-Element.md
+++ /dev/null
@@ -1,6 +0,0 @@
-You can create different levels of Heading elements by using **h1, h2, h3, h4, h5, h6** which will result on different sizes.
-
-```
-<h1>Hello World</h1>
-<h2>CatPhotoApp</h2>
-```
\ No newline at end of file
diff --git a/Waypoint-House-our-page-within-a-Bootstrap-Container-Fluid-Div.md b/Waypoint-House-our-page-within-a-Bootstrap-Container-Fluid-Div.md
deleted file mode 100644
index 7aac302..0000000
--- a/Waypoint-House-our-page-within-a-Bootstrap-Container-Fluid-Div.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# House our page within a Bootstrap Container Fluid Div
-To make the content responsive, we use the `container-fluid` class.
-
-```
-<div class="container-fluid">
-<h3 class="text-primary text-center">jQuery Playground</h3>
-</div>
-```
diff --git a/Waypoint-Import-a-Google-Font.md b/Waypoint-Import-a-Google-Font.md
deleted file mode 100644
index 7c720d1..0000000
--- a/Waypoint-Import-a-Google-Font.md
+++ /dev/null
@@ -1,3 +0,0 @@
-To import a font from Google or any other site, this is the format that you should follow: `<link href="http://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">`
-
-Once imported, it can then be used in the font-family property
\ No newline at end of file
diff --git a/Waypoint-Increment-a-Number-with-Javascript.md b/Waypoint-Increment-a-Number-with-Javascript.md
deleted file mode 100644
index 3783c7a..0000000
--- a/Waypoint-Increment-a-Number-with-Javascript.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Increment a Number with Javascript
-You can easily increment or add `1` to a variable with the `++` operator.
-
-`i++;`
-
-is the equivalent of
-
-`i = i + 1;`
-
-**Note** The entire line becomes `i++;`, eliminating the need for the equal sign.
diff --git a/Waypoint-Inform-with-the-Paragraph-Element.md b/Waypoint-Inform-with-the-Paragraph-Element.md
deleted file mode 100644
index b5b8b04..0000000
--- a/Waypoint-Inform-with-the-Paragraph-Element.md
+++ /dev/null
@@ -1,9 +0,0 @@
-`p` elements are the preferred element for normal-sized paragraph text on websites. P is short for "paragraph".
-
-You can create a p element like so: `<p>I'm a p tag!</p>`.
-
-```
-<h1>Hello World</h1>
-<h2>CatPhotoApp</h2>
-<p>Hello Paragraph</p>
-```
\ No newline at end of file
diff --git a/Waypoint-Inherit-Styles-from-the-Body-Element.md b/Waypoint-Inherit-Styles-from-the-Body-Element.md
deleted file mode 100644
index b5e2142..0000000
--- a/Waypoint-Inherit-Styles-from-the-Body-Element.md
+++ /dev/null
@@ -1,13 +0,0 @@
-The `body` element can be styled just like any other.
-
-```
-<style>
-  body {
-    background-color: black;
-    color: green;
-    font-family: Monospace
-  }
-
-</style>
-<h1>Hello World</h1>
-```
\ No newline at end of file
diff --git a/Waypoint-Initializing-Variables-with-the-Equal-Operator.md b/Waypoint-Initializing-Variables-with-the-Equal-Operator.md
deleted file mode 100644
index 86fcd5f..0000000
--- a/Waypoint-Initializing-Variables-with-the-Equal-Operator.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Initializing Variables with the Equal Operator
-In most cases you will see a variable being declared and given an initial value all at the same time. This allows you to use it right away with a proper value.
-
-`var myVar = 0;`
-
-Creates a new variable called `myVar` and assigns it an initial value of `0
-`.
diff --git a/Waypoint-Introducing-Else-If-Statements.md b/Waypoint-Introducing-Else-If-Statements.md
deleted file mode 100644
index 19b0071..0000000
--- a/Waypoint-Introducing-Else-If-Statements.md
+++ /dev/null
@@ -1,13 +0,0 @@
-#Waypoint: Introducing Else If Statements
-
-If you have multiple conditions that need to be addressed, you can chain `if` statements together with `else if` statements.
-
-```js
-if (num > 15) {
-  return "Bigger than 15";
-} else if (num < 5) {
-  return "Smaller than 5";
-} else {
-  return "Between 5 and 15";
-}
-```
diff --git a/Waypoint-Introducing-Else-Statements.md b/Waypoint-Introducing-Else-Statements.md
deleted file mode 100644
index aa7110f..0000000
--- a/Waypoint-Introducing-Else-Statements.md
+++ /dev/null
@@ -1,11 +0,0 @@
-#Waypoint: Introducing Else Statements
-
-When a condition for an `if` statement is true, the block of code following it is executed. What about when that condition is false? Normally nothing would happen. With an `else` statement, an alternate block of code can be executed.
-
-```js
-if (num > 10) {
-  return "Bigger than 10";
-} else {
-  return "10 or Less";
-}
-```
diff --git a/Waypoint-Introducing-Javascript-Object-Notation-Json.md b/Waypoint-Introducing-Javascript-Object-Notation-Json.md
deleted file mode 100644
index 0fe1e79..0000000
--- a/Waypoint-Introducing-Javascript-Object-Notation-Json.md
+++ /dev/null
@@ -1,22 +0,0 @@
-#Waypoint: Introducing JavaScript Object Notation JSON
-
-JavaScript Object Notation or `JSON` uses the format of JavaScript Objects to store data. JSON is flexible because it allows for `Data Structures` with arbitrary combinations of `strings`, `numbers`, `booleans`, `arrays`, and `objects`.
-
-Here is an example of a JSON object:
-
-```js
-var ourMusic = [
-  {
-    "artist": "Daft Punk",
-    "title": "Homework",
-    "release_year": 1997,
-    "formats": [ 
-      "CD", 
-      "Cassette", 
-      "LP" ],
-    "gold": true
-  }
-];
-```
-
-This is an array of objects and the object has various pieces of `metadata` about an album. It also has a nested `formats` array. Additional album records could be added to the top level array.
\ No newline at end of file
diff --git a/Waypoint-Invert-Regular-Expression-Matches-with-JavaScript.md b/Waypoint-Invert-Regular-Expression-Matches-with-JavaScript.md
deleted file mode 100644
index bc66487..0000000
--- a/Waypoint-Invert-Regular-Expression-Matches-with-JavaScript.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Invert Regular Expression Matches with JavaScript
-Use`/\S/gi`; to match everything that isn't a space in the string.
-
-You can invert any match by using the uppercase version of the selector `\s` versus `\S` for example.
diff --git a/Waypoint-Iterate-Odd-Numbers-With-a-For-Loop.md b/Waypoint-Iterate-Odd-Numbers-With-a-For-Loop.md
deleted file mode 100644
index 11460f0..0000000
--- a/Waypoint-Iterate-Odd-Numbers-With-a-For-Loop.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Iterate Odd Numbers With a For Loop
-For loops don't have to iterate one at a time. By changing our `final-expression`, we can count by even numbers.
-
-We'll start at `i = 0` and loop while `i < 10`. We'll increment `i` by 2 each loop with `i += 2`.
-
-```js
-var ourArray = [];
-
-for(var i = 0; i < 10; i += 2) {
-
-  ourArray.push(i);
-
-}
-```
-
-ourArray will now contain `[0,2,4,6,8]`
diff --git a/Waypoint-Iterate-Through-An-Array-With-A-For-Loop.md b/Waypoint-Iterate-Through-An-Array-With-A-For-Loop.md
deleted file mode 100644
index 0b9b63a..0000000
--- a/Waypoint-Iterate-Through-An-Array-With-A-For-Loop.md
+++ /dev/null
@@ -1,12 +0,0 @@
-#Waypoint: Iterate Through an Array with a For Loop
-
-A common task in Javascript is to iterate through the contents of an array. One way to do that is with a `for` loop. This code will output each element of the array `arr` to the console:
-
-```js
-    var arr = [10,9,8,7,6];
-    for (var i=0; i < arr.length; i++) {
-       console.log(arr[i]);
-    }
-```
-
-Remember that Arrays have zero-based numbering, which means the last index of the array is length - 1. Our `condition` for this loop is i < arr.length, which stops when i is at length - 1.
diff --git a/Waypoint-Iterate-over-Arrays-with-map.md b/Waypoint-Iterate-over-Arrays-with-map.md
deleted file mode 100644
index d3ad86a..0000000
--- a/Waypoint-Iterate-over-Arrays-with-map.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Using *map* is the best way to iterate through an array or object. Map uses a function to pretty much do whatever you want it to do. It will pass each value to the callback function.
-
-```
-//Use map to add three to each value in the array
-var array = [1,2,3,4,5];
-
-array = array.map(function(val){
-  return val + 3;
-});
-```
\ No newline at end of file
diff --git a/Waypoint-Iterate-with-JavaScript-For-Loops.md b/Waypoint-Iterate-with-JavaScript-For-Loops.md
deleted file mode 100644
index e6d1871..0000000
--- a/Waypoint-Iterate-with-JavaScript-For-Loops.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Iterate with JavaScript For Loops
-The most common type of JavaScript loop is called a `for loop` because it runs `for` a specific number of times.
-
-```
-var ourArray = [];
-for(var i = 0; i < 5; i++) {
-  ourArray.push(i);
-}
-```
-
-ourArray will now contain [0,1,2,3,4]
-
-## More about for loops
-```
-for(var i = 0; i < 5; i++) {  // There are 3 parts here
-```
-There are three parts to for loop.  They are separated by semicolons.  
-
-1. The initialization: `var i = 0;` - This code runs only once at the start of the loop. It's usually used to declare the counter variable (with `var`) and initialize the counter (in this case it is set to 0).   
-
-2. The condition: `i < 5;` - The loop will run as long as this is `true`. That means that as soon as `i` is equal to 5, the loop will stop looping.  Note that the inside of the loop will never see `i` as 5 because it will stop before then.  If this condition is initially `false`, the loop will never execute.  
-
-3. The increment: `i++` - This code is run at the end of each loop. It's usually a simple increment (`++` operator), but can really be any mathematical transformation. It is used to move the counter (`i`) forward (or backwards, or whatever.
\ No newline at end of file
diff --git a/Waypoint-Iterate-with-JavaScript-While-Loops.md b/Waypoint-Iterate-with-JavaScript-While-Loops.md
deleted file mode 100644
index c6fa265..0000000
--- a/Waypoint-Iterate-with-JavaScript-While-Loops.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Iterate with JavaScript While Loops
-Another type of JavaScript loop is called a `while loop` because it runs `while` something is true, and stops once that something is no longer true.
-
-```
-var ourArray = [];
-var i = 0;
-while(i < 5) {
-  ourArray.push(i);
-  i++;
-}
-```
diff --git a/Waypoint-Join-Strings-with-.join.md b/Waypoint-Join-Strings-with-.join.md
deleted file mode 100644
index 78ed7cd..0000000
--- a/Waypoint-Join-Strings-with-.join.md
+++ /dev/null
@@ -1,3 +0,0 @@
-We can use the `.join()` method to join each element in an array into a string separated by whatever delimiter you provide as an argument to the join operation.
-
-`var joinMe = joinMe.join(" ");`
\ No newline at end of file
diff --git a/Waypoint-Label-Bootstrap-Buttons.md b/Waypoint-Label-Bootstrap-Buttons.md
deleted file mode 100644
index 48e9597..0000000
--- a/Waypoint-Label-Bootstrap-Buttons.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Label Bootstrap Buttons
-Just like we labeled our [wells](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Waypoint-Label-Bootstrap-Wells), we want to label our buttons.
diff --git a/Waypoint-Label-Bootstrap-Wells.md b/Waypoint-Label-Bootstrap-Wells.md
deleted file mode 100644
index b18c91c..0000000
--- a/Waypoint-Label-Bootstrap-Wells.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Label Bootstrap Wells
-You can add labels to the wells by using the headers `<h4>` above the well divs.
diff --git a/Waypoint-Learn-how-Script-Tags-and-Document-Ready-Work.md b/Waypoint-Learn-how-Script-Tags-and-Document-Ready-Work.md
deleted file mode 100644
index 397beaf..0000000
--- a/Waypoint-Learn-how-Script-Tags-and-Document-Ready-Work.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Learn how Script Tags and Document Ready Work
-For some reason FCC likes to introduce `jQuery` before JavaScript itself.
-
-To add JS to your HTML, you need a `script` tag.  Your browser will run any JavaScript inside a script element, including jQuery.
-
-Inside your script element, add this code: `$(document).ready(function() {` to your script. Then close it on the following line (still inside your script element) with: `});`
-
-```
-<script> $(document).ready(function(){
-
-});</script>
-```
diff --git a/Waypoint-Line-up-Form-Elements-Responsively-with-Bootstrap.md b/Waypoint-Line-up-Form-Elements-Responsively-with-Bootstrap.md
deleted file mode 100644
index 3b7561b..0000000
--- a/Waypoint-Line-up-Form-Elements-Responsively-with-Bootstrap.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Line up Form Elements Responsively with Bootstrap
-We line up the form elements the same way we do with others, using divs.
-
-```
-<div class="row">
-<div class="col-xs-7"><input type="text" class="form-control" placeholder="cat photo URL" required></div>
-<div class=col-xs-5><button type="submit" class="btn btn-primary"><i class="fa fa-paper-plane"></i> Submit</button></div>
-</div>
-```
diff --git a/Waypoint-Link-to-External-Pages-with-Anchor-Elements.md b/Waypoint-Link-to-External-Pages-with-Anchor-Elements.md
deleted file mode 100644
index 8f90a90..0000000
--- a/Waypoint-Link-to-External-Pages-with-Anchor-Elements.md
+++ /dev/null
@@ -1,3 +0,0 @@
-`a` elements, also known as anchor elements, are used to link to content outside of the current page.
-
-Here's an example: `<p>Here's a <a href="http://freecodecamp.com"> link to Free Code Camp</a> for you to follow.</p>`.
\ No newline at end of file
diff --git a/Waypoint-Local-Scope-And-Functions.md b/Waypoint-Local-Scope-And-Functions.md
deleted file mode 100644
index 65a2056..0000000
--- a/Waypoint-Local-Scope-And-Functions.md
+++ /dev/null
@@ -1,16 +0,0 @@
-#Waypoint: Local Scope and Functions
-
-Variables which are declared within a function, as well as the function parameters have local scope. That means, they are only visible within that function.
-
-Here is a function `myTest` with a local variable called `loc`.
-
-```js
-function myTest() {
-  var loc = "foo";
-  console.log(loc);
-}
-myTest(); // "foo"
-console.log(loc); // "undefined"
-```
-
-`loc` is not defined outside of the function.
\ No newline at end of file
diff --git a/Waypoint-Make-Circular-Images-with-a-Border-Radius.md b/Waypoint-Make-Circular-Images-with-a-Border-Radius.md
deleted file mode 100644
index 844da6c..0000000
--- a/Waypoint-Make-Circular-Images-with-a-Border-Radius.md
+++ /dev/null
@@ -1,10 +0,0 @@
-You can also use percentage to `border-radius` to make things round.
-
-```
-.thick-green-border {
-  border-color: green;
-  border-width: 10px;
-  border-style: solid;
-  border-radius: 50%;
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Make-Dead-Links-using-the-Hash-Symbol.md b/Waypoint-Make-Dead-Links-using-the-Hash-Symbol.md
deleted file mode 100644
index 47cda58..0000000
--- a/Waypoint-Make-Dead-Links-using-the-Hash-Symbol.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Replace your a element's `href` attribute with a `#`, also known as a hash symbol, to turn it into a dead link. Sometimes you want to add a elements to your website before you know where they will link.
-
-This is also handy when you're changing the behavior of a link using jQuery, which we'll learn about later.
\ No newline at end of file
diff --git a/Waypoint-Make-Images-Mobile-Responsive.md b/Waypoint-Make-Images-Mobile-Responsive.md
deleted file mode 100644
index d087ef5..0000000
--- a/Waypoint-Make-Images-Mobile-Responsive.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Make Images Mobile Responsive
-When using Bootstrap, if you want an image to be responsive, all you have to do is add the class `img-responsive` to it. `<img class="img-responsive" src="http://bit.ly/fcc-running-cats">`
diff --git a/Waypoint-Make-Instances-of-Objects-with-a-Constructor-Function.md b/Waypoint-Make-Instances-of-Objects-with-a-Constructor-Function.md
deleted file mode 100644
index a75128c..0000000
--- a/Waypoint-Make-Instances-of-Objects-with-a-Constructor-Function.md
+++ /dev/null
@@ -1,15 +0,0 @@
-A function that creates objects is called a _constructor_, my favorite way of creating objects when you have to create more than one of the same object. You can also edit the second object to add more properties if needed. This is called creating _instances_ of an object.
-
-Each new instance of this object inherits all the properties and methods of your original object.
-
-```
-var Car = function() {
-   this.wheels = 4;
-};
-
-// New instance of Car object.
-var myCar = new Car();
-
-//Add the property "engines" to myCar, and make it a number.
-myCar.engines = 1;
-```
\ No newline at end of file
diff --git a/Waypoint-Make-Object-Properties-Private.md b/Waypoint-Make-Object-Properties-Private.md
deleted file mode 100644
index f467559..0000000
--- a/Waypoint-Make-Object-Properties-Private.md
+++ /dev/null
@@ -1,34 +0,0 @@
-Objects have their own attributes, called _properties_, and their own functions, called _methods_.
-
-You can use the `this` keyword to reference _public properties and methods_ of the current objects. However, when You need to create private ones so they are not accessible from the outside of the object you just remove the keyword `this` from the object property or method declaration and declare it with `var` so that it is private outside its scope.
-
-```js
-var Bike = function() {
-  var speed = 100; // private
-  function addUnit(value) { // private
-    return value + "KM/H";
-  }
-
-  this.getSpeed = function () {  // public
-    return addUnit(speed);
-  };
-
-};
-```
-
-Another example:
-
-```js
-var Cake = function() {
-
-  var loot = 2;
-  // Getter to know how much loot you have
-  this.getLoot = function() {
-    return loot;
-  };
-
-  // Setter to change the ammount of loot
-  this.setLoot = function(num){
-    loot = num;
-  };
-  ```
diff --git a/Waypoint-Make-Unique-Objects-by-Passing-Parameters-to-our-Constructor.md b/Waypoint-Make-Unique-Objects-by-Passing-Parameters-to-our-Constructor.md
deleted file mode 100644
index 7d64aae..0000000
--- a/Waypoint-Make-Unique-Objects-by-Passing-Parameters-to-our-Constructor.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Make Unique Objects by Passing Parameters to our Constructor
-When you have a constructor but don't want to keep creating the same object, all you have to do is add parameters to the constructor the following way:
-
-```js
-var Car = function(wheels, seats, engines) {
-
-  this.wheels = wheels;
-
-  this.seats = seats;
-
-  this.engines = engines;
-
-};
-```
-
-Now you can pass in arguments when you call the constructor. `var myCar = new Car(6, 3, 1);`
-
-This will result in:
-
-```js
-{
-
-  wheels: 6,
-
-  seats: 3,
-
-  engines: 1
-
-}
-```
diff --git a/Waypoint-Manipulate-Arrays-With-pop().md b/Waypoint-Manipulate-Arrays-With-pop().md
deleted file mode 100644
index 25bd07c..0000000
--- a/Waypoint-Manipulate-Arrays-With-pop().md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Manipulate Arrays With pop()
-Another way to change the data in an array is with the `.pop()` function.
-
-`.pop()` is used to "pop" a value off of the end of an array. We can retrieve this value by performing `pop()` in a variable declaration.
-
-Any type of variable can be "popped" off of an array.
diff --git a/Waypoint-Manipulate-Arrays-With-push().md b/Waypoint-Manipulate-Arrays-With-push().md
deleted file mode 100644
index 495e07a..0000000
--- a/Waypoint-Manipulate-Arrays-With-push().md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Manipulate Arrays With push()
-Not only can you `pop()` data off of the end of an array, you can also `push()` data onto the end of an array.
-
-`myArray.push(["dog", 3]);`
diff --git a/Waypoint-Manipulate-Arrays-With-shift().md b/Waypoint-Manipulate-Arrays-With-shift().md
deleted file mode 100644
index 8bdd6e2..0000000
--- a/Waypoint-Manipulate-Arrays-With-shift().md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Manipulate Arrays With shift()
-`shift()` removes the first element unlike `pop()` which removes the last.
diff --git a/Waypoint-Manipulate-Arrays-With-unshift().md b/Waypoint-Manipulate-Arrays-With-unshift().md
deleted file mode 100644
index d62b9eb..0000000
--- a/Waypoint-Manipulate-Arrays-With-unshift().md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Manipulate Arrays With unshift()
-`myArray.unshift('Paul');` Basically you call `unshift` and pass what was deleted.
diff --git a/Waypoint-Manipulate-JavaScript-Objects.md b/Waypoint-Manipulate-JavaScript-Objects.md
deleted file mode 100644
index 4a398a3..0000000
--- a/Waypoint-Manipulate-JavaScript-Objects.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Manipulate JavaScript Objects
-We can add properties to objects like this:
-
-`myObject.myProperty = "myValue";`
-
-We can also delete them like this:
-
-`delete(myObject.myProperty);`
diff --git a/Waypoint-Modify-Array-Data-With-Indexes.md b/Waypoint-Modify-Array-Data-With-Indexes.md
deleted file mode 100644
index 5c2786a..0000000
--- a/Waypoint-Modify-Array-Data-With-Indexes.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Modify Array Data With Indexes
-We can also modify the data stored in arrays by using indexes.
-
-For example:
-
-```
-var ourArray = [3,2,1];
-ourArray[0] = 1; // equals [1,2,1]
-```
diff --git a/Waypoint-Multiple-Identical-Options-In-Switch-Statements.md b/Waypoint-Multiple-Identical-Options-In-Switch-Statements.md
deleted file mode 100644
index 2ecbfd1..0000000
--- a/Waypoint-Multiple-Identical-Options-In-Switch-Statements.md
+++ /dev/null
@@ -1,17 +0,0 @@
-#Waypoint: Multiple Identical Options in Switch Statements
-
-If the `break` statement is ommitted from a `switch` statement's `case`, the following `case` statement(s) are executed until a `break` is encountered. If you have multiple inputs with the same output, you can represent them in a `switch` statement like this:
-
-```js
-switch(val) {
-  case 1:
-  case 2:
-  case 3:
-    result = "1, 2, or 3";
-    break;
-  case 4:
-    result = "4 alone";
-}
-```
-
-Cases for 1, 2, and 3 will all produce the same result.
\ No newline at end of file
diff --git a/Waypoint-Multiply-Two-Numbers-with-JavaScript.md b/Waypoint-Multiply-Two-Numbers-with-JavaScript.md
deleted file mode 100644
index eebd6c0..0000000
--- a/Waypoint-Multiply-Two-Numbers-with-JavaScript.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Multiply Two Numbers with JavaScript
-JavaScript uses use the `*` symbol for multiplication.
-
-`var product = 8 * 10;`
diff --git a/Waypoint-Nest-Many-Elements-within-a-Single-Div-Element.md b/Waypoint-Nest-Many-Elements-within-a-Single-Div-Element.md
deleted file mode 100644
index 009127b..0000000
--- a/Waypoint-Nest-Many-Elements-within-a-Single-Div-Element.md
+++ /dev/null
@@ -1,23 +0,0 @@
-The `div` element, also known as a division element, is a general purpose container for other elements.
-
-The div element is probably the most commonly used HTML element of all. It's useful for passing the CSS of its own class declarations down to all the elements that it contains.
-
-Just like any other non-self-closing element, you can open a `div` element with `<div>` and close it on another line with `</div>`.
-
-```
-<div>
- <p>Things cats love:</p>
- <ul>
-   <li>cat nip</li>
-   <li>laser pointers</li>
-   <li>lasagna</li>
- </ul>
- <p>Top 3 things cats hate:</p>
- <ol>
-   <li>flea treatment</li>
-   <li>thunder</li>
-   <li>other cats</li>
- </ol>
-</div>
->
-```
\ No newline at end of file
diff --git a/Waypoint-Nest-an-Anchor-Element-within-a-Paragraph.md b/Waypoint-Nest-an-Anchor-Element-within-a-Paragraph.md
deleted file mode 100644
index cc4a7f9..0000000
--- a/Waypoint-Nest-an-Anchor-Element-within-a-Paragraph.md
+++ /dev/null
@@ -1 +0,0 @@
-Nesting is simple, just add one element inside another: `<p> click here for <a href="http://www.catphotoapp.com">cat photos</a></p>`
\ No newline at end of file
diff --git a/Waypoint-Nest-one-Array-within-Another-Array.md b/Waypoint-Nest-one-Array-within-Another-Array.md
deleted file mode 100644
index fc091a7..0000000
--- a/Waypoint-Nest-one-Array-within-Another-Array.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Nest one Array within Another Array
-You can nest arrays within other arrays, like this:`[["Bulls", 43]]`.
diff --git a/Waypoint-Nesting-For-Loops.md b/Waypoint-Nesting-For-Loops.md
deleted file mode 100644
index caeb0aa..0000000
--- a/Waypoint-Nesting-For-Loops.md
+++ /dev/null
@@ -1,16 +0,0 @@
-#Waypoint: Nesting For Loops
-
-If you have a multi-dimensional array, you can use the same logic as the prior waypoint to loop through both the array and any sub-arrays. Here is an example:
-
-```js
-    var arr = [
-      [1,2], [3,4], [5,6]
-    ];
-    for (var i=0; i < arr.length; i++) {
-      for (var j=0; j < arr[i].length; j++) {
-        console.log(arr[i][j]);
-      }
-    }
-```
-
-This outputs each sub-element in `arr` one at a time. Note that for the inner loop, we are checking the `.length` of `arr[i]`, since `arr[i]` is itself an array.
\ No newline at end of file
diff --git a/Waypoint-Override-All-Other-Styles-by-using-Important.md b/Waypoint-Override-All-Other-Styles-by-using-Important.md
deleted file mode 100644
index 3067a58..0000000
--- a/Waypoint-Override-All-Other-Styles-by-using-Important.md
+++ /dev/null
@@ -1,3 +0,0 @@
-In many situations, you will use CSS libraries. These may accidentally override your own CSS. So when you absolutely need to be sure that an element has specific CSS, you can use !important.
-
-An example of how to do this is: `color: red !important;` This will make sure that we use the wanted property regardless of other overrides.
\ No newline at end of file
diff --git a/Waypoint-Override-Class-Declarations-by-Styling-ID-Attributes.md b/Waypoint-Override-Class-Declarations-by-Styling-ID-Attributes.md
deleted file mode 100644
index e7c7bb2..0000000
--- a/Waypoint-Override-Class-Declarations-by-Styling-ID-Attributes.md
+++ /dev/null
@@ -1,19 +0,0 @@
-We can use `id` to override  styling too. `id` should have a higher priority than `class`, so its rules apply if a conflict occurs.
-
-```
-<style>
-  body {
-    background-color: black;
-    font-family: Monospace;
-    color: green;
-  }
-  .pink-text {
-    color: pink;
-  }
-  .blue-text {
-    color: blue;
-  }
-  #orange-text{color:orange;}
-</style>
-<h1 class="pink-text blue-text" id="orange-text">Hello World!</h1>
-```
\ No newline at end of file
diff --git a/Waypoint-Override-Class-Declarations-with-Inline-Styles.md b/Waypoint-Override-Class-Declarations-with-Inline-Styles.md
deleted file mode 100644
index b88c43f..0000000
--- a/Waypoint-Override-Class-Declarations-with-Inline-Styles.md
+++ /dev/null
@@ -1 +0,0 @@
-Remember, in line styles look like this: `<h1 style="color: green">` They will override everything else that was changing the text color of h1.
\ No newline at end of file
diff --git a/Waypoint-Override-Styles-in-Subsequent-CSS.md b/Waypoint-Override-Styles-in-Subsequent-CSS.md
deleted file mode 100644
index 9c01f34..0000000
--- a/Waypoint-Override-Styles-in-Subsequent-CSS.md
+++ /dev/null
@@ -1 +0,0 @@
-Your classes will override the body's CSS, if we add a new class that changes the same property, the last one will be the one applied.
\ No newline at end of file
diff --git a/Waypoint-Passing-Values-To-Functions-With-Arguments.md b/Waypoint-Passing-Values-To-Functions-With-Arguments.md
deleted file mode 100644
index b6099de..0000000
--- a/Waypoint-Passing-Values-To-Functions-With-Arguments.md
+++ /dev/null
@@ -1,17 +0,0 @@
-#Waypoint: Passing Values to Functions with Arguments
-
-`Parameters` are variables that act as placeholders for the values that are to be input to a function when it is called. When a function is defined, it is typically defined along with one or more parameters. The actual values that are input (or "*passed*") into a function when it is called are known as `arguments`.
-
-Here is a function with two parameters, `param1` and `param2`:
-
-```js
-function testFun(param1, param2) {
-  console.log(param1, param2);
-}
-```
-
-Then we can call testFun:
-
-`testFun("Hello", "World");`
-
-We have passed two arguments, `"Hello"` and `"World"`. Inside the function, `param1` will equal "Hello" and `param2` will equal "World". Note that you could call `testFun` again with different arguments and the parameters would take on the value of the new arguments.
\ No newline at end of file
diff --git a/Waypoint-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md b/Waypoint-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md
deleted file mode 100644
index d28dfc5..0000000
--- a/Waypoint-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Perform Arithmetic Operations on Decimals with JavaScript
-In JavaScript, you can perform calculations with decimal numbers, just like whole numbers.
-
-`var quotient = 4.4 / 2.0; // equals 2.2`
diff --git a/Waypoint-Prefilter-JSON.md b/Waypoint-Prefilter-JSON.md
deleted file mode 100644
index 4e24e36..0000000
--- a/Waypoint-Prefilter-JSON.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Prefilter JSON
-The **filter()** method creates a new array with all elements that pass the test implemented by the provided function.
-
-So when you don't want to work with all the elements from the array then you can use filter.
-
-Let's filter out the cat who's "id" key has a value of 1.
-
-Here's the code to do this:
-
-```js
-
-json = json.filter(function(val) {
-
-  return(val.id !== 1);
-
-});
-```
-
-More about filter:
diff --git a/Waypoint-Prioritize-One-Style-Over-Another.md b/Waypoint-Prioritize-One-Style-Over-Another.md
deleted file mode 100644
index e7999f5..0000000
--- a/Waypoint-Prioritize-One-Style-Over-Another.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Classes to individual elements take priority over general styles.
-
-```
-<style>
-  body {
-    background-color: black;
-    font-family: Monospace;
-    color: green;
-  }
-  .pink-text{color: pink;}
-</style>
-<h1 class="pink-text">Hello World!</h1>
-```
-
-This makes for a pink h1 instead of a green one.
\ No newline at end of file
diff --git a/Waypoint-Quoting-Strings-with-Single-Quotes.md b/Waypoint-Quoting-Strings-with-Single-Quotes.md
deleted file mode 100644
index 79237bc..0000000
--- a/Waypoint-Quoting-Strings-with-Single-Quotes.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Quoting Strings with Single Quotes
-String values in JavaScript may be written with single or double quotes, so long as you start and end with the same type of quote. Unlike some languages, single and double quotes are functionally identical in Javascript.
-
-`"This string has \"double quotes\" in it"`
-
-The value in using one or the other has to do with the need to escape quotes of the same type. If you have a string with many double quotes, this can be difficult to read and write. Instead, use single quotes:
-
-`'This string has "double quotes" in it. And "probably" lots of them.'`
diff --git a/Waypoint-Remove-Classes-from-an-element-with-jQuery.md b/Waypoint-Remove-Classes-from-an-element-with-jQuery.md
deleted file mode 100644
index 8fa1eac..0000000
--- a/Waypoint-Remove-Classes-from-an-element-with-jQuery.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Remove Classes from an element with jQuery
-The same way we can add classes using jQuery, we an also remove them with `removeClass()`.
-
-`$("button").removeClass("btn-default");`
diff --git a/Waypoint-Remove-an-Element-Using-jQuery.md b/Waypoint-Remove-an-Element-Using-jQuery.md
deleted file mode 100644
index 4493154..0000000
--- a/Waypoint-Remove-an-Element-Using-jQuery.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Remove an Element Using jQuery
-jQuery has a function called `.remove()` that will remove an HTML element entirely. `$("#target4").remove();`
diff --git a/Waypoint-Render-Images-from-Data-Sources.md b/Waypoint-Render-Images-from-Data-Sources.md
deleted file mode 100644
index c4219e1..0000000
--- a/Waypoint-Render-Images-from-Data-Sources.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Render Images from Data Sources
-
-Obtaining image links from JSON objects has been explained already. However, how do you present that image as an actual image requires a bit of ingenuity, yet it is simple even if you don't figure it out yourself. You have to generate html using the variable to complete the link like this: `html += "<img src = '" + val.imageLink + "'>";`
diff --git a/Waypoint-Replacing-If-Else-Chains-With-Switch.md b/Waypoint-Replacing-If-Else-Chains-With-Switch.md
deleted file mode 100644
index 6f5c244..0000000
--- a/Waypoint-Replacing-If-Else-Chains-With-Switch.md
+++ /dev/null
@@ -1,28 +0,0 @@
-#Waypoint: Replacing If Else Chains with Switch
-
-If you have many options to choose from, a `switch` statement can be easier to write than many chained `if/if` else statements. The following:
-
-```js
-if(val === 1) {
-  answer = "a";
-} else if(val === 2) {
-  answer = "b";
-} else {
-  answer = "c";
-}
-```
-
-can be replaced with:
-
-```js
-switch (val) {
-  case 1:
-    answer = "a";
-    break;
-  case 2:
-    answer = "b";
-    break;
-  default:
-    answer = "c";
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Responsively-Style-Checkboxes.md b/Waypoint-Responsively-Style-Checkboxes.md
deleted file mode 100644
index 053a2cb..0000000
--- a/Waypoint-Responsively-Style-Checkboxes.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Responsively Style Checkboxes
-You can use Bootstrap's `col-xs-*` classes on form elements, too! This way, our checkboxes will be evenly spread out across the page, regardless of how wide the screen resolution is.
-
-Nest all your checkboxes in a `<div class="row">` element. Then nest each of them in a `<div class="col-xs-4">` element.
diff --git a/Waypoint-Responsively-Style-Radio-Buttons.md b/Waypoint-Responsively-Style-Radio-Buttons.md
deleted file mode 100644
index bb49c4d..0000000
--- a/Waypoint-Responsively-Style-Radio-Buttons.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Responsively Style Radio Buttons
-You can use Bootstrap's `col-xs-*` classes on `form` elements. That will make radio buttons evenly spread out across the page regardless of how wide the screen might be.
-
-Nest all of your radio buttons within a `<div class="row">` element. Then nest each of them within a `<div class="col-xs-6">` element.
-
-```
-<form action="/submit-cat-photo">
-  <div class="row">
-    <div class="col-xs-6"><label><input type="radio" name="indoor-outdoor"> Indoor</label></div>
-    <div class="col-xs-6"><label><input type="radio" name="indoor-outdoor"> Outdoor</label></div>
-    <div class="col-xs-6"><label><input type="checkbox" name="personality"> Loving</label></div>
-    <div class="col-xs-6"><label><input type="checkbox" name="personality"> Lazy</label></div>
-    <div class="col-xs-6"><label><input type="checkbox" name="personality"> Crazy</label></div>
-  </div>
-  <input type="text" placeholder="cat photo URL" required>
-  <button type="submit">Submit</button>
-</form>
-```
diff --git a/Waypoint-Return-A-Value-From-A-Function-With-Return.md b/Waypoint-Return-A-Value-From-A-Function-With-Return.md
deleted file mode 100644
index db022c3..0000000
--- a/Waypoint-Return-A-Value-From-A-Function-With-Return.md
+++ /dev/null
@@ -1,16 +0,0 @@
-#Waypoint: Return a Value from a Function with Return
-
-We can pass values into a function with `arguments`. You can use a `return` statement to send a value back out of a function.
-
-##Example
-
-```js
-function plusThree(num) {
-  return num + 3;
-}
-var answer = plusThree(5); // 8
-```
-
-`plusThree` takes an `argument` for `num` and returns a value equal to `num + 3`.
-
-A `return` statement will also end the execution of it's parent function. Hence, any statements inside a function scope after a `return` statement will not be executed. In case of multiple `return` statements in a function, only the first one will get executed.
\ No newline at end of file
diff --git a/Waypoint-Return-Early-Pattern-For-Functions.md b/Waypoint-Return-Early-Pattern-For-Functions.md
deleted file mode 100644
index 9e22996..0000000
--- a/Waypoint-Return-Early-Pattern-For-Functions.md
+++ /dev/null
@@ -1,16 +0,0 @@
-#Waypoint: Return Early Pattern for Functions
-
-When a `return` statement is reached, the execution of the current function stops and control returns to the calling location.
-
-##Example
-
-```js
-function myFun() {
-  console.log("Hello");
-  return "World";
-  console.log("byebye")
-}
-myFun();
-```
-
-The above outputs "Hello" to the console, returns "World", but `"byebye"` is never output, because the function exits at the `return` statement.
\ No newline at end of file
diff --git a/Waypoint-Returning-Boolean-Values-From-Functions.md b/Waypoint-Returning-Boolean-Values-From-Functions.md
deleted file mode 100644
index 6e4ad8c..0000000
--- a/Waypoint-Returning-Boolean-Values-From-Functions.md
+++ /dev/null
@@ -1,23 +0,0 @@
-#Waypoint: Returning Boolean Values from Functions
-
-You may recall from Comparison with the Equality Operator that all comparison operators return a boolean `true` or `false` value.
-
-A common `anti-pattern` is to use an `if/else` statement to do a comparison and then return `true/false`:
-
-```js
-function isEqual(a,b) {
-  if(a === b) {
-    return true;
-  } else {
-    return false;
-  }
-}
-```
-
-Since `===` returns `true` or `false`, we can simply return the result of the comparison:
-
-```js
-function isEqual(a,b) {
-  return a === b;
-}
-```
diff --git a/Waypoint-Reverse-Arrays-with-reverse.md b/Waypoint-Reverse-Arrays-with-reverse.md
deleted file mode 100644
index f105c37..0000000
--- a/Waypoint-Reverse-Arrays-with-reverse.md
+++ /dev/null
@@ -1,7 +0,0 @@
-You can use the .reverse() function to reverse the contents of an array.
-
-```
-var array = [1,2,3,4,5,6,7];
-
-array = array.reverse();
-```
\ No newline at end of file
diff --git a/Waypoint-Save-your-Code-Revisions-Forever-with-Git.md b/Waypoint-Save-your-Code-Revisions-Forever-with-Git.md
deleted file mode 100644
index 730099f..0000000
--- a/Waypoint-Save-your-Code-Revisions-Forever-with-Git.md
+++ /dev/null
@@ -1,15 +0,0 @@
-For the Git waypoints you just have to follow the instructions closely. From how to create your [c9](http://c9.io/) account to completing the tutorial.
-
-For that you will need `git-it` to go to the challenges, and `git-it verify` to check that you completed it correctly. For detailed instructions read them here: [http://jlord.us/git-it/index.html](http://jlord.us/git-it/index.html)
-
-After you learn how to use git, here are other resources to help you learn more about git:
-
-- [Creating a New Github Issue](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Creating-a-New-Github-Issue)
-- [Git Blame](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Git-Blame)
-- [Git Merge](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/git-merge)
-- [Git Rebase](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/git-rebase)
-- [Other Git Resources](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Git-Resources)
-- [Writing Great Git Commit Messages](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Writing-great-git-commit-message)
-- [Using GitHub Pages for your front end dev projects](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Using-Github-Pages-for-your-front-end-development-projects)
-- [Search your issue on GitHub](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Searching-for-Your-Issue-on-Github)
-- [How Issue Mods Work](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/How-GitHub-Issue-Moderators-AKA-Issue-Mods-Work)
diff --git a/Waypoint-Say-Hello-to-HTML-Elements.md b/Waypoint-Say-Hello-to-HTML-Elements.md
deleted file mode 100644
index 2b421b4..0000000
--- a/Waypoint-Say-Hello-to-HTML-Elements.md
+++ /dev/null
@@ -1,11 +0,0 @@
-HTML elements are written with a starting tag, an ending tag, and the content in between:
-
-- `<tagname>content</tagname>`
-
-The HTML element is everything from the start tag to the end tag:
-
-- `<p>My first HTML paragraph.</p>`
-
-Opening tags look like this: `<h1>`, and closing tags look like this: `</h1>`  
-
-- Note that the only difference between opening tags and closing tags, is that closing tags have a slash after their opening angle bracket. The slash in the closing tag is very important because it indicates that the tag is the end of the element.
diff --git a/Waypoint-Selecting-From-Many-Options-With-Switch-Statements.md b/Waypoint-Selecting-From-Many-Options-With-Switch-Statements.md
deleted file mode 100644
index 6b965f9..0000000
--- a/Waypoint-Selecting-From-Many-Options-With-Switch-Statements.md
+++ /dev/null
@@ -1,22 +0,0 @@
-#Waypoint: Selecting from many options with Switch Statements
-
-If you have many options to choose from, use a `switch` statement. A `switch` statement tests a value and can have many `case` statements which defines various possible values. Statements are executed from the first matched `case` value until a `break` is encountered.
-
-Here is a `pseudocode` example:
-
-```js
-switch (num) {
-  case value1:
-    statement1;
-    break;
-  case value2:
-    statement2;
-    break;
-...
-  case valueN:
-    statementN;
-    break;
-}
-```
-
-`case` values are tested with strict equality (`===`). The `break` tells JavaScript to stop executing statements. If the `break` is omitted, the next statement will be executed.
\ No newline at end of file
diff --git a/Waypoint-Set-the-Font-Family-of-an-Element.md b/Waypoint-Set-the-Font-Family-of-an-Element.md
deleted file mode 100644
index bc2a0cf..0000000
--- a/Waypoint-Set-the-Font-Family-of-an-Element.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Font family is controlled by the `font-family` CSS attribute, like this `h1 {font-family: Sans-serif;}`
-
-It allows you to pick a font to display to the user.
-
-More font-family examples can be viewed at [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family)
-
-***Note***: Keep in mind that different computers and browsers will have different fonts enabled. 
-Commonly available fonts are called *Web Safe*
-
-```
- p {
-    font-size: 16px;
-    font-family: Monospace;
-  }
-```
\ No newline at end of file
diff --git a/Waypoint-Set-the-ID-of-an-Element.md b/Waypoint-Set-the-ID-of-an-Element.md
deleted file mode 100644
index 3ad2d5f..0000000
--- a/Waypoint-Set-the-ID-of-an-Element.md
+++ /dev/null
@@ -1,7 +0,0 @@
-In addition to classes, each HTML element can also have an `id` attribute.
-
-There are several benefits to using id attributes, and you'll learn more about them once you start using jQuery.
-
-`id` attributes should be unique. Browsers won't enforce this, but it is a widely agreed upon best practice. So please don't give more than one element the same id attribute.
-
-Here's an example of how you give your h2 element the id of cat-photo-app: <h2 id="cat-photo-app">
\ No newline at end of file
diff --git a/Waypoint-Sift-through-Text-with-Regular-Expressions.md b/Waypoint-Sift-through-Text-with-Regular-Expressions.md
deleted file mode 100644
index 59a47b3..0000000
--- a/Waypoint-Sift-through-Text-with-Regular-Expressions.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Sift through Text with Regular Expressions
-`Regular expressions` are used to find certain words or patterns inside of strings.
-
-Regular expressions are usually surrounded by `/` symbols.
-
-For example, if we wanted to find the number of times the word the occurred in the string The dog chased the cat, we could use the following regular expression: `/the+/gi`
-
-Let's break this down a bit:
-
-the is the pattern we want to match.
-- `+` means we want to find one or more occurrences of this pattern.
-- `g` means that we want to search the entire string for this pattern.
-- `i` means that we want to ignore the case (uppercase or lowercase) when searching for the pattern.
diff --git a/Waypoint-Size-your-Images.md b/Waypoint-Size-your-Images.md
deleted file mode 100644
index f7cf96b..0000000
--- a/Waypoint-Size-your-Images.md
+++ /dev/null
@@ -1,3 +0,0 @@
-CSS has an attribute called `width` that controls an element's width. Just like with fonts, we'll use `px` (pixels) to specify the image's width.
-
-For example, if we wanted to create a CSS class called larger-image that gave HTML elements a width of 500 pixels, we'd use: `<style> .larger-image { width: 500px; } </style>`.
\ No newline at end of file
diff --git a/Waypoint-Sort-Arrays-with-sort.md b/Waypoint-Sort-Arrays-with-sort.md
deleted file mode 100644
index 423ada2..0000000
--- a/Waypoint-Sort-Arrays-with-sort.md
+++ /dev/null
@@ -1,8 +0,0 @@
-You can use the method sort to easily sort the values in the array alphabetically or numerically
-
-```
-var array = [1,3,2];
-
-array = array.sort();
-```
-This will return `[1, 2, 3]`
\ No newline at end of file
diff --git a/Waypoint-Specify-How-Fonts-Should-Degrade.md b/Waypoint-Specify-How-Fonts-Should-Degrade.md
deleted file mode 100644
index 613c488..0000000
--- a/Waypoint-Specify-How-Fonts-Should-Degrade.md
+++ /dev/null
@@ -1,3 +0,0 @@
-There are several default fonts that are available in all browsers. These include `Monospace`, `Serif` and `Sans-Serif`.
-
-For example, if you wanted an element to use the `Helvetica` font, but also degrade to the `Sans-Serif` font when `Helvetica` wasn't available, you could use this CSS style: `p { font-family: Helvetica, Sans-Serif; }`.
\ No newline at end of file
diff --git a/Waypoint-Split-Strings-with-split.md b/Waypoint-Split-Strings-with-split.md
deleted file mode 100644
index f753180..0000000
--- a/Waypoint-Split-Strings-with-split.md
+++ /dev/null
@@ -1,5 +0,0 @@
-You can use the `.split()` method to split a string into an array.
-
-split uses the argument you give to to split the string.
-
-`array = string.split(' ');`
\ No newline at end of file
diff --git a/Waypoint-Split-your-Bootstrap-Row.md b/Waypoint-Split-your-Bootstrap-Row.md
deleted file mode 100644
index 64c4fde..0000000
--- a/Waypoint-Split-your-Bootstrap-Row.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Split your Bootstrap Row
-Create two `div` elements within your row, both with the class `col-xs-6`.
-
-```
-<div class="container-fluid">
-  <h3 class="text-primary text-center">jQuery Playground</h3>
-  <div class="row">
-    <div class="col-xs-6"> </div>
-    <div class="col-xs-6"></div>
-  </div>
-</div>
-```
diff --git a/Waypoint-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md b/Waypoint-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md
deleted file mode 100644
index 5389e03..0000000
--- a/Waypoint-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Store Multiple Values in one Variable using JavaScript Arrays
-With JavaScript array variables, we can store several pieces of data in one place.
-
-You start an array declaration with an opening bracket, end it with a closing bracket, and put a comma between each entry, like this: `var sandwich = ["peanut butter", "jelly", "bread"]`.
-
-`myArray = [2,'j'];`
diff --git a/Waypoint-Storing-Values-with-the-Equal-Operator.md b/Waypoint-Storing-Values-with-the-Equal-Operator.md
deleted file mode 100644
index 4373930..0000000
--- a/Waypoint-Storing-Values-with-the-Equal-Operator.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Storing Values with the Equal Operator
-In Javascript, you can store a value in a variable with the assignment or equal (=) operator.
-
-`myVariable = 5;`
-
-Assignment always goes from right to left. Everything to the right of the = operator is resolved before the value is assigned to the variable to the left of the operator.
-
-```js
-myVar = 5;
-
-myNum = myVar;
-```
diff --git a/Waypoint-Style-Multiple-Elements-with-a-CSS-Class.md b/Waypoint-Style-Multiple-Elements-with-a-CSS-Class.md
deleted file mode 100644
index 359974f..0000000
--- a/Waypoint-Style-Multiple-Elements-with-a-CSS-Class.md
+++ /dev/null
@@ -1,15 +0,0 @@
-You can attach classes to HTML elements by using `class="your-class-here"` within the relevant element's opening tag.
-
-CSS selectors require a period at the beginning like this: `.blue-text { color: blue; }`, but that class declaration in the HTML doesn't use a period, like this: `<h2 class="blue-text">CatPhotoApp<h2>`.
-
-```html
-<style>
-  .red-text {
-    color: red;
-  }
-</style>
-
-<h2 class="red-text">CatPhotoApp</h2>
-
-<p class="red-text">Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.</p>
-```
\ No newline at end of file
diff --git a/Waypoint-Style-Text-Inputs-as-Form-Controls.md b/Waypoint-Style-Text-Inputs-as-Form-Controls.md
deleted file mode 100644
index 682b330..0000000
--- a/Waypoint-Style-Text-Inputs-as-Form-Controls.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Style Text Inputs as Form Controls
-You can add the `fa-paper-plane` Font Awesome icon by adding `<i class="fa fa-paper-plane"></i>` within your submit button element.
-
-`<button type="submit" class="btn btn-primary"><i class="fa fa-paper-plane">Submit</i>`
diff --git a/Waypoint-Style-the-HTML-Body-Element.md b/Waypoint-Style-the-HTML-Body-Element.md
deleted file mode 100644
index fa51843..0000000
--- a/Waypoint-Style-the-HTML-Body-Element.md
+++ /dev/null
@@ -1 +0,0 @@
-Every HTML page has the `body` element. and it is like the main page.
\ No newline at end of file
diff --git a/Waypoint-Subtract-One-Number-from-Another-with-JavaScript.md b/Waypoint-Subtract-One-Number-from-Another-with-JavaScript.md
deleted file mode 100644
index f2b3028..0000000
--- a/Waypoint-Subtract-One-Number-from-Another-with-JavaScript.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Subtract One Number from Another with JavaScript
-We can also subtract one number from another.
-
-JavaScript uses use the - symbol for subtraction. `var difference = 45 - 33;`
diff --git a/Waypoint-Target-Elements-by-Class-Using-jQuery.md b/Waypoint-Target-Elements-by-Class-Using-jQuery.md
deleted file mode 100644
index b39cdd1..0000000
--- a/Waypoint-Target-Elements-by-Class-Using-jQuery.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Target Elements by Class Using jQuery
-Just as we did before, we can also target elements by classes.
-
-`$(".well").addClass("animated shake");`
diff --git a/Waypoint-Target-Elements-by-ID-Using-jQuery.md b/Waypoint-Target-Elements-by-ID-Using-jQuery.md
deleted file mode 100644
index f975d1c..0000000
--- a/Waypoint-Target-Elements-by-ID-Using-jQuery.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Target Elements by ID Using jQuery
-You can also target elements by their id attributes. Note that, just like with CSS declarations, you type a # before the id's name.
-
-`$("#target3").addClass("animated fadeOut");`
diff --git a/Waypoint-Target-Even-Numbered-Elements-Using-jQuery.md b/Waypoint-Target-Even-Numbered-Elements-Using-jQuery.md
deleted file mode 100644
index 4b1011b..0000000
--- a/Waypoint-Target-Even-Numbered-Elements-Using-jQuery.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Target Even Numbered Elements Using jQuery
-You can also target all the even-numbered elements.
-
-Here's how you would target all the `odd-numbered` elements with class target and give them classes: `$('.target:odd').addClass('animated shake');`
-
-This will shake all the even ones: `$('.target:even').addClass("shake");`
diff --git a/Waypoint-Target-HTML-Elements-with-Selectors-Using-jQuery.md b/Waypoint-Target-HTML-Elements-with-Selectors-Using-jQuery.md
deleted file mode 100644
index ed74c8f..0000000
--- a/Waypoint-Target-HTML-Elements-with-Selectors-Using-jQuery.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Target HTML Elements with Selectors Using jQuery
-After we have created our `document ready function` we can now have code that will run after the page loads. This will assure that your code does not run before the HTML is rendered to avoid bugs.
-
-jQuery often selects an HTML element with a selector, then does something to that element.
-
-The following code will make the buttons have a bouncy animation on page load.
-
-```
-<script>
-  $(document).ready(function() {
-    $("button").addClass("animated bounce");
-  });
-</script>
-```
diff --git a/Waypoint-Target-a-Specific-Child-of-an-Element-Using-jQuery.md b/Waypoint-Target-a-Specific-Child-of-an-Element-Using-jQuery.md
deleted file mode 100644
index 934979f..0000000
--- a/Waypoint-Target-a-Specific-Child-of-an-Element-Using-jQuery.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Target a Specific Child of an Element Using jQuery
-jQuery uses CSS Selectors to target elements. `target:nth-child(n)` css selector allows you to select all the nth element with the target class or element type.
-
-Here's how you would give the third element in each well bounce: `$(".target:nth-child(3)").addClass("animated bounce");`
-
-`$(".btn:nth-child(2)").addClass("animated bounce");`
diff --git a/Waypoint-Target-the-Children-of-an-Element-Using-jQuery.md b/Waypoint-Target-the-Children-of-an-Element-Using-jQuery.md
deleted file mode 100644
index c43059c..0000000
--- a/Waypoint-Target-the-Children-of-an-Element-Using-jQuery.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Target the Children of an Element Using jQuery
-Many HTML elements have children elements from which they inherit properties.
-
-jQuery has a function called `children()` that allows you to access the children of whichever element you've selected.
-
-Here's an example of how you would use the `children()` function: `$("#left-well").children().css("color", "blue");`
diff --git a/Waypoint-Target-the-Parent-of-an-Element-Using-jQuery.md b/Waypoint-Target-the-Parent-of-an-Element-Using-jQuery.md
deleted file mode 100644
index 69730e4..0000000
--- a/Waypoint-Target-the-Parent-of-an-Element-Using-jQuery.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Target the Parent of an Element Using jQuery
-Every HTML elements has a parent element from which it inherits properties.
-
-For example, your jQuery Playground `h3` element has the parent element of`<div class="container-fluid">`, which itself has the parent body.
-
-jQuery has a function called `parent()` that allows you to access the parent of whichever element you've selected.
-
-Here's an example of how you would use the `parent()` function: `$("#left-well").parent().css("background-color", "blue")`
diff --git a/Waypoint-Target-the-same-element-with-multiple-jQuery-Selectors.md b/Waypoint-Target-the-same-element-with-multiple-jQuery-Selectors.md
deleted file mode 100644
index ef710f2..0000000
--- a/Waypoint-Target-the-same-element-with-multiple-jQuery-Selectors.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Target the same element with multiple jQuery Selectors
-The multiple jQuery selectors are:
-1. By type: `$("button")`
-2. By class: `$(".btn")`
-3. By id: `$("#target1")`
-
-```
-<script>
-  $(document).ready(function() {
-    $("button").addClass("animated");
-    $(".btn").addClass("shake");
-    $("#target1").addClass("btn-primary");
-  });
-</script>
-```
diff --git a/Waypoint-Taste-the-Bootstrap-Button-Color-Rainbow.md b/Waypoint-Taste-the-Bootstrap-Button-Color-Rainbow.md
deleted file mode 100644
index 5da1e82..0000000
--- a/Waypoint-Taste-the-Bootstrap-Button-Color-Rainbow.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Taste the Bootstrap Button Color Rainbow
-The `btn-primary` class is the main color you'll use in your app. It is useful for highlighting actions you want your user to take. Note that this button will still need the `btn` and `btn-block` classes.
-
-`<button class="btn btn-block btn-primary">Like</button>`
diff --git a/Waypoint-Testing-Objects-For-Properties.md b/Waypoint-Testing-Objects-For-Properties.md
deleted file mode 100644
index 6f1daf3..0000000
--- a/Waypoint-Testing-Objects-For-Properties.md
+++ /dev/null
@@ -1,14 +0,0 @@
-#Waypoint: Testing Objects for Properties
-
-Sometimes it is useful to check if the property of a given object exists or not. We can use the .hasOwnProperty([propname]) method of objects to determine if that object has the given property name. .hasOwnProperty() returns true or false if the property is found or not.
-
-##Example
-
-```js
-var myObj = {
-  top: "hat",
-  bottom: "pants"
-};
-myObj.hasOwnProperty("top");    // true
-myObj.hasOwnProperty("middle"); 
-```
\ No newline at end of file
diff --git a/Waypoint-Trigger-Click Events-with-jQuery.md b/Waypoint-Trigger-Click Events-with-jQuery.md
deleted file mode 100644
index 2fe37bc..0000000
--- a/Waypoint-Trigger-Click Events-with-jQuery.md	
+++ /dev/null
@@ -1,14 +0,0 @@
-# Trigger Click Events with jQuery
-APIs - or Application Programming Interfaces - are tools that computers use to communicate with one another.
-
-`$(document).ready()` This function makes it so all code inside of it only runs once our page loads.
-
-Inside that you can add any function or code, for this particular waypoint you need to add a click handler:
-
-```js
-$("#getMessage").on("click", function(){
-  //Custom code here
-});
-```
-
-This will create a function so when the element with id `getMessage` is clicked, the custom function will be run.
diff --git a/Waypoint-Turn-an-Image-into-a-Link.md b/Waypoint-Turn-an-Image-into-a-Link.md
deleted file mode 100644
index 8865eac..0000000
--- a/Waypoint-Turn-an-Image-into-a-Link.md
+++ /dev/null
@@ -1 +0,0 @@
-Creating images that link to things is essential and one of the most used things in Web Dev. Nest your image within an `a` element. Here's an example: `<a href="#"><img src="http://bit.ly/fcc-running-cats"/></a>`.
\ No newline at end of file
diff --git a/Waypoint-Uncomment-HTML.md b/Waypoint-Uncomment-HTML.md
deleted file mode 100644
index 7a2fdc2..0000000
--- a/Waypoint-Uncomment-HTML.md
+++ /dev/null
@@ -1,8 +0,0 @@
-Comments allow code to be ignored. In the HTML language, comments are done by wrapping the code you wish to ignore with <!-- and -->
-`<!-- This text would not show up as it is a comment -->`
-
-You can easily uncomment by just removing the comment elements.
-
-***Note:*** Be careful when uncommenting HTML to remove both the beginning and end portions of the comment!
-
-***Note:*** Comments might be done differently in other languages such as JavaScript, but the general concept of removing whatever marks a comment applies.
\ No newline at end of file
diff --git a/Waypoint-Understand-Boolean-Values.md b/Waypoint-Understand-Boolean-Values.md
deleted file mode 100644
index d0495dd..0000000
--- a/Waypoint-Understand-Boolean-Values.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Understand Boolean Values
-Booleans can only hold the value of either true or false. They are basically little on-off switches.
diff --git a/Waypoint-Understand-String-Immutability.md b/Waypoint-Understand-String-Immutability.md
deleted file mode 100644
index fd54988..0000000
--- a/Waypoint-Understand-String-Immutability.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Understand String Immutability
-In Javascript, String values are `immutable`, which means that they cannot be altered once created.
-
-## Example
-
-```js
-var myStr = "Bob";
-myStr[0] = "J";
-```
-
-Would not work, the only way would be:
-
-```js
-var myStr = "Bob";
-myStr = "Job";
-```
diff --git a/Waypoint-Understanding-Case-Sensitivity-in-Variables.md b/Waypoint-Understanding-Case-Sensitivity-in-Variables.md
deleted file mode 100644
index 69a3fbd..0000000
--- a/Waypoint-Understanding-Case-Sensitivity-in-Variables.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Understanding Case Sensitivity in Variables
-In JavaScript all variables and function names are case sensitive. This means that capitalization matters.
-
-`MYVAR` is not the same as `MyVar` nor `myvar`. It is possible to have multiple distinct variables with the same name but different casing. It is strongly recommended that for the sake of clarity, you do not use this language feature.
-
-## Best Practice
-Write variable names in Javascript in `camelCase`. In `camelCase`, `multi-word` variable names have the first word in lowercase and the first letter of each subsequent word is capitalized.
-
-## Examples:
-
-```js
-var someVariable;
-var anotherVariableName;
-var thisVariableNameIsTooLong;
-```
diff --git a/Waypoint-Understanding-Uninitialized-Variables.md b/Waypoint-Understanding-Uninitialized-Variables.md
deleted file mode 100644
index 5d81a8a..0000000
--- a/Waypoint-Understanding-Uninitialized-Variables.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Understanding Uninitialized Variables
-When JavaScript variables are declared, they have an initial value of `undefined`. If you do a mathematical operation on an undefined variable your result will be `NaN` which means "Not a Number". If you concatenate a string with an undefined variable, you will get a literal string of "undefined".
-
-Basically this means that before you do any operations with them you **must** assign an initial value at some point.
diff --git a/Waypoint-Updating-Object-Properties.md b/Waypoint-Updating-Object-Properties.md
deleted file mode 100644
index f3fdb30..0000000
--- a/Waypoint-Updating-Object-Properties.md
+++ /dev/null
@@ -1,22 +0,0 @@
-#Waypoint: Updating Object Properties
-
-After you've created a JavaScript object, you can update its properties at any time just like you would update any other variable. You can use either dot or bracket notation to update.
-
-For example, let's look at `ourDog`:
-
-```js
-var ourDog = {
-  "name": "Camper",
-  "legs": 4,
-  "tails": 1,
-  "friends": ["everything!"]
-};
-```
-
-Since he's a particularly happy dog, let's change his name to "Happy Camper". Here's how we update his object's name property:
-
-`ourDog.name = "Happy Camper";` or
-
-`ourDog["name"] = "Happy Camper";`
-
-Now when we evaluate `ourDog.name`, instead of getting "Camper", we'll get his new name, "Happy Camper".
\ No newline at end of file
diff --git a/Waypoint-Use-Abbreviated-Hex-Code.md b/Waypoint-Use-Abbreviated-Hex-Code.md
deleted file mode 100644
index cf6d6f6..0000000
--- a/Waypoint-Use-Abbreviated-Hex-Code.md
+++ /dev/null
@@ -1,11 +0,0 @@
-red, which is `#FF0000` in hex code, can be shortened to `#F00`. That is, one digit for red, one digit for green, one digit for blue.
-
-This reduces the total number of possible colors to around 4,000. But browsers will interpret `#FF0000` and `#F00` as exactly the same color.
-
-```
-<style>
-  body {
-    background-color: #F00;
-  }
-</style>
-```
\ No newline at end of file
diff --git a/Waypoint-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md b/Waypoint-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md
deleted file mode 100644
index 8a36dc4..0000000
--- a/Waypoint-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Use Bracket Notation to Find the First Character in a String
-Bracket notation is a way to get a character at a specific index within a string.
-
-Computers don't start counting at `1` like humans do. They start at `0`. `firstLetterOfLastName = lastName[0];`
diff --git a/Waypoint-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md b/Waypoint-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md
deleted file mode 100644
index ae73703..0000000
--- a/Waypoint-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Use Bracket Notation to Find the Last Character in a String
-In order to get the last letter of a string, you can subtract one from the string's length.
-
-For example, if `var firstName = "Charles"`, you can get the value of the last letter of the string by using `firstName[firstName.length - 1]`.
-
-`var lastLetterOfLastName = lastName[lastName.length -1];`
diff --git a/Waypoint-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md b/Waypoint-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md
deleted file mode 100644
index 95fab20..0000000
--- a/Waypoint-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Use Bracket Notation to Find the Nth Character in a String
-You can also use bracket notation to get the character at other positions within a string.
-
-Remember that computers start counting at `0`, so the first character is actually the zeroth character.
-
-`var thirdLetterOfLastName = lastName[2];`
diff --git a/Waypoint-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md b/Waypoint-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md
deleted file mode 100644
index dab3730..0000000
--- a/Waypoint-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Use Bracket Notation to Find the Nth-to-Last Character in a String
-You can get the value of the third-to-last letter of the `var firstName = "Charles"` string by using `firstName[firstName.length - 3]`.
diff --git a/Waypoint-Use-CSS-Selectors-to-Style-Elements.md b/Waypoint-Use-CSS-Selectors-to-Style-Elements.md
deleted file mode 100644
index c017d50..0000000
--- a/Waypoint-Use-CSS-Selectors-to-Style-Elements.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Instead of giving style attributes one by one, we can do this to multiple elements at the same time.
-
-You can create a style element like this: `<style></style>`.
-
-Inside that style element, you can create a CSS selector for any HTML Elements. For example, if you wanted all h2 elements to be red, your style element would look like this: `<style>h2 {color: red;}</style>`.
-
-Note that it's important to have both opening and closing curly braces `({` and `})` around each element's style. You also need to make sure your element's style is between the opening and closing style tags. Finally, be sure to add the semicolon to the end of each of your element's styles.
\ No newline at end of file
diff --git a/Waypoint-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md b/Waypoint-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md
deleted file mode 100644
index 3d0fbb9..0000000
--- a/Waypoint-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Instead of specifying an element's`margin-top`, `margin-right`, `margin-bottom`, and `margin-left` attributes, you can specify them all in one line, like this: `margin: 10px 20px 10px 20px;`.
-
-These four values work like a clock: top, right, bottom, left, and will produce the exact same result as using the side-specific margin instructions.
-
-```
-.green-box {
-  background-color: green;
-  margin: 40px 20px 20px 40px;
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md b/Waypoint-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md
deleted file mode 100644
index 4f2be59..0000000
--- a/Waypoint-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Instead of specifying an element's `padding-top`, `padding-right`, `padding-bottom`, and `padding-lef`t attributes, you can specify them all in one line, like this: `padding: 10px 20px 10px 20px;`.
-
-These four values work like a clock: top, right, bottom, left, and will produce the exact same result as using the side-specific padding instructions.
-
-```
-.green-box {
-  background-color: green;
-  padding: 40px 20px 20px 40px
-}
-```
\ No newline at end of file
diff --git a/Waypoint-Use-Comments-to-Clarify-Code.md b/Waypoint-Use-Comments-to-Clarify-Code.md
deleted file mode 100644
index 5d088f5..0000000
--- a/Waypoint-Use-Comments-to-Clarify-Code.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# Use Comments to Clarify Code
-When we start using jQuery, we will modify HTML elements without needing to actually change them in HTML.
-
-This is a great way to make websites with a particular structure. Remember that you can start a comment with `<!-- and end a comment with -->`
-
-```
-<!--You shouldn't need to modify code below this line -->
-<div class="container-fluid">
- <h3 class="text-primary text-center">jQuery Playground</h3>
- <div class="row">
-   <div class="col-xs-6">
-     <h4>#left-well</h4>
-     <div class="well" id="left-well">
-       <button class="btn btn-default target" id="target1">#target1</button>
-       <button class="btn btn-default target" id="target2">#target2</button>
-       <button class="btn btn-default target" id="target3">#target3</button>
-     </div>
-   </div>
-   <div class="col-xs-6">
-     <h4>#right-well</h4>
-     <div class="well" id="right-well">
-       <button class="btn btn-default target" id="target4">#target4</button>
-       <button class="btn btn-default target" id="target5">#target5</button>
-       <button class="btn btn-default target" id="target6">#target6</button>
-     </div>
-   </div>
- </div>
-</div>
-```
diff --git a/Waypoint-Use-Conditional-Logic-with-If-Else-Statements.md b/Waypoint-Use-Conditional-Logic-with-If-Else-Statements.md
deleted file mode 100644
index 2d5d0c7..0000000
--- a/Waypoint-Use-Conditional-Logic-with-If-Else-Statements.md
+++ /dev/null
@@ -1,19 +0,0 @@
-#Waypoint: Use Conditional Logic with If Statements
-
-We can use `if` statements in JavaScript to execute code only if the specified condition is met.
-
-Each `if` statement requires a `boolean` condition to evaluate. If the boolean evaluates to `true`, the statements inside the curly braces will execute. Otherwise, if it evaluates to `false`, the code will not execute.
-
-##Example
-
-```js
-
-function test(myVal) {
-  if (myVal > 10) {
-     return "Greater Than";
-  }
-  return "Not Greater Than";
-}
-```
-
-If `myVal` is greater than `10`, the function will return `"Greater Than"`. If it is not, the function will return `"Not Greater Than"`. Both `return` statements will never get executed because as soon as the first one is encountered, the execution exits the function and returns control to where the function was called.
\ No newline at end of file
diff --git a/Waypoint-Use-HTML5-to-Require-a-Field.md b/Waypoint-Use-HTML5-to-Require-a-Field.md
deleted file mode 100644
index 718c10a..0000000
--- a/Waypoint-Use-HTML5-to-Require-a-Field.md
+++ /dev/null
@@ -1,10 +0,0 @@
-You can require specific form fields so that your user will not be able to submit your form until he or she has filled them out.
-
-For example, if you wanted to make a text input field required, you can just add the word required within your input element, you would use: `<input type="text" required>`.
-
-```
-<form action="/submit-cat-photo">
-  <input type="text" placeholder="cat photo URL" required>
-  <button type="submit">Submit</button>
-</form>
-```
\ No newline at end of file
diff --git a/Waypoint-Use-Hex-Code-for-Specific-Colors.md b/Waypoint-Use-Hex-Code-for-Specific-Colors.md
deleted file mode 100644
index 0fe85a2..0000000
--- a/Waypoint-Use-Hex-Code-for-Specific-Colors.md
+++ /dev/null
@@ -1,3 +0,0 @@
-With CSS, we use 6 hexadecimal number to represent colors. For example, `#000000` is the lowest possible value, and it represents the color black.
-
-This is the same as `#RRGGBB` which can also be simplified to `#RGB`.
\ No newline at end of file
diff --git a/Waypoint-Use-Hex-Code-for-Specific-Shades-of-Gray.md b/Waypoint-Use-Hex-Code-for-Specific-Shades-of-Gray.md
deleted file mode 100644
index 50e6970..0000000
--- a/Waypoint-Use-Hex-Code-for-Specific-Shades-of-Gray.md
+++ /dev/null
@@ -1 +0,0 @@
-We can also create other shades of gray by evenly mixing all three colors. We can go very close to true black. `background-color: #111111;`
\ No newline at end of file
diff --git a/Waypoint-Use-Hex-Code-to-Color-Elements-Blue.md b/Waypoint-Use-Hex-Code-to-Color-Elements-Blue.md
deleted file mode 100644
index 98b2eb6..0000000
--- a/Waypoint-Use-Hex-Code-to-Color-Elements-Blue.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Just as with [red](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Waypoint-Use-Hex-Code-to-Color-Elements-Red) and the others.
-
-```
-<style>
-  body {
-    background-color: #0000FF;
-  }
-</style>
-```
\ No newline at end of file
diff --git a/Waypoint-Use-Hex-Code-to-Color-Elements-Gray.md b/Waypoint-Use-Hex-Code-to-Color-Elements-Gray.md
deleted file mode 100644
index fdbe1a2..0000000
--- a/Waypoint-Use-Hex-Code-to-Color-Elements-Gray.md
+++ /dev/null
@@ -1 +0,0 @@
-We can also create different shades of gray by evenly mixing all three colors. `background-color: #808080;`
\ No newline at end of file
diff --git a/Waypoint-Use-Hex-Code-to-Color-Elements-Green.md b/Waypoint-Use-Hex-Code-to-Color-Elements-Green.md
deleted file mode 100644
index b11e4e3..0000000
--- a/Waypoint-Use-Hex-Code-to-Color-Elements-Green.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Just as with [red](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Waypoint-Use-Hex-Code-to-Color-Elements-Red) and the others.
-
-```
-<style>
-  body {
-    background-color: #00FF00;
-  }
-</style>
-```
\ No newline at end of file
diff --git a/Waypoint-Use-Hex-Code-to-Color-Elements-Red.md b/Waypoint-Use-Hex-Code-to-Color-Elements-Red.md
deleted file mode 100644
index 4670af3..0000000
--- a/Waypoint-Use-Hex-Code-to-Color-Elements-Red.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Hex code follows the red-green-blue, or rgb format. The first two digits of hex code represent the amount of red in the color. The third and fourth digit represent the amount of green. The fifth and sixth represent the amount of blue.
-
-So to get the absolute brightest red, you would just use `F` for the first and second digits (the highest possible value) and `0` for the third, fourth, fifth and sixth digits (the lowest possible value).
\ No newline at end of file
diff --git a/Waypoint-Use-Hex-Code-to-Color-Elements-White.md b/Waypoint-Use-Hex-Code-to-Color-Elements-White.md
deleted file mode 100644
index 0168eae..0000000
--- a/Waypoint-Use-Hex-Code-to-Color-Elements-White.md
+++ /dev/null
@@ -1 +0,0 @@
-`0` is the lowest number in hex code, and represents a complete absence of color. `F` is the highest number in hex code, and it represents the maximum possible brightness.
\ No newline at end of file
diff --git a/Waypoint-Use-Hex-Code-to-Mix-Colors.md b/Waypoint-Use-Hex-Code-to-Mix-Colors.md
deleted file mode 100644
index 4e3b298..0000000
--- a/Waypoint-Use-Hex-Code-to-Mix-Colors.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Orange is pure red, mixed with some green, and no blue.
-
-```
-<style>
-  body {
-    background-color: #FFA500;
-  }
-</style>
-```
\ No newline at end of file
diff --git a/Waypoint-Use-RGB-to-Color-Elements-Blue.md b/Waypoint-Use-RGB-to-Color-Elements-Blue.md
deleted file mode 100644
index 6396043..0000000
--- a/Waypoint-Use-RGB-to-Color-Elements-Blue.md
+++ /dev/null
@@ -1 +0,0 @@
-The RGB value blue: `rgb(0, 0, 255)`
\ No newline at end of file
diff --git a/Waypoint-Use-RGB-to-Color-Elements-Gray.md b/Waypoint-Use-RGB-to-Color-Elements-Gray.md
deleted file mode 100644
index 0dc39f8..0000000
--- a/Waypoint-Use-RGB-to-Color-Elements-Gray.md
+++ /dev/null
@@ -1 +0,0 @@
-RGB value for gray: `rgb(128, 128, 128)`
\ No newline at end of file
diff --git a/Waypoint-Use-RGB-to-Color-Elements-Green.md b/Waypoint-Use-RGB-to-Color-Elements-Green.md
deleted file mode 100644
index 65330d0..0000000
--- a/Waypoint-Use-RGB-to-Color-Elements-Green.md
+++ /dev/null
@@ -1 +0,0 @@
-The rgb value green: `rgb(0, 255, 0)`
\ No newline at end of file
diff --git a/Waypoint-Use-RGB-to-Color-Elements-Red.md b/Waypoint-Use-RGB-to-Color-Elements-Red.md
deleted file mode 100644
index 4705b36..0000000
--- a/Waypoint-Use-RGB-to-Color-Elements-Red.md
+++ /dev/null
@@ -1 +0,0 @@
-`background-color: rgb(255, 0, 0)`
\ No newline at end of file
diff --git a/Waypoint-Use-RGB-to-Color-Elements-White.md b/Waypoint-Use-RGB-to-Color-Elements-White.md
deleted file mode 100644
index a34d6da..0000000
--- a/Waypoint-Use-RGB-to-Color-Elements-White.md
+++ /dev/null
@@ -1 +0,0 @@
-`background-color: rgb(255,255,255)`
\ No newline at end of file
diff --git a/Waypoint-Use-RGB-to-Mix-Colors.md b/Waypoint-Use-RGB-to-Mix-Colors.md
deleted file mode 100644
index f494b7f..0000000
--- a/Waypoint-Use-RGB-to-Mix-Colors.md
+++ /dev/null
@@ -1 +0,0 @@
-RGB value orange: `rgb(255, 165, 0)`
\ No newline at end of file
diff --git a/Waypoint-Use-RGB-values-to-Color-Elements.md b/Waypoint-Use-RGB-values-to-Color-Elements.md
deleted file mode 100644
index 979b364..0000000
--- a/Waypoint-Use-RGB-values-to-Color-Elements.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Another way you can represent colors in CSS is by using `rgb` values.
-
-RGB values look like this: `rgb(0, 0, 0)` for black and `rgb(255, 255, 255)` for white.
-
-Instead of using six hexadecimal digits like you do with hex code, with rbg you specify the brightness of each color with a number between 0 and 255. `background-color: rgb(0,0,0);`
\ No newline at end of file
diff --git a/Waypoint-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md b/Waypoint-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md
deleted file mode 100644
index e82ab8b..0000000
--- a/Waypoint-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Use Responsive Design with Bootstrap Fluid Containers
-Bootstrap will figure out how wide your screen is and respond by resizing your HTML elements - hence the name Responsive Design.
-
-With responsive design, there is no need to design a mobile version of your website. It will look good on devices with screens of any width.
-
-You can add Bootstrap to any app just by including it with `<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"/>` at the top of your HTML.
diff --git a/Waypoint-Use-Spans-for-Inline-Elements.md b/Waypoint-Use-Spans-for-Inline-Elements.md
deleted file mode 100644
index ce52c34..0000000
--- a/Waypoint-Use-Spans-for-Inline-Elements.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Use Spans for Inline Elements
-You can use use spans to create inline elements. By using the span element, you can put several elements together, and even style different parts of the same element differently.
-
-`<p><span class = "text-danger">Things cats love:</span></p>`
diff --git a/Waypoint-Use-a-CSS-Class-to-Style-an-Element.md b/Waypoint-Use-a-CSS-Class-to-Style-an-Element.md
deleted file mode 100644
index 12f3d90..0000000
--- a/Waypoint-Use-a-CSS-Class-to-Style-an-Element.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Classes are reusable styles that can be added to HTML elements. You can apply a class to an HTML element like this: `<h2 class="blue-text">CatPhotoApp</h2>`.
-
-Note that in your CSS style element, classes should start with a period. In your HTML elements' class declarations, classes shouldn't start with a period.
\ No newline at end of file
diff --git a/Waypoint-Use-an-ID-Attribute-to-Style-an-Element.md b/Waypoint-Use-an-ID-Attribute-to-Style-an-Element.md
deleted file mode 100644
index 56e33d2..0000000
--- a/Waypoint-Use-an-ID-Attribute-to-Style-an-Element.md
+++ /dev/null
@@ -1,7 +0,0 @@
-One cool thing about `id` attributes is that, like classes, you can style them using CSS.
-
-Here's an example of how you can take your element with the `id` attribute of cat-photo-element and give it the background color of green.
-
-In your style element: `#cat-photo-element { background-color: green; }`
-
-Note that inside your style element, you always reference classes by putting a `.` in front of their names. You always reference ids by putting a `#` in front of their names.
\ No newline at end of file
diff --git a/Waypoint-Use-appendTo-to-Move-Elements-with-jQuery.md b/Waypoint-Use-appendTo-to-Move-Elements-with-jQuery.md
deleted file mode 100644
index bcf0317..0000000
--- a/Waypoint-Use-appendTo-to-Move-Elements-with-jQuery.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Use appendTo to Move Elements with jQuery
-jQuery has a function called `appendTo()` that allows you to select HTML elements and append them to another element.
-
-For example, if we wanted to move target4 from our right well to our left well, we would use `$("#target4").appendTo("#left-well");`
diff --git a/Waypoint-Use-jQuery-to-Modify-the-Entire-Page.md b/Waypoint-Use-jQuery-to-Modify-the-Entire-Page.md
deleted file mode 100644
index da2ee55..0000000
--- a/Waypoint-Use-jQuery-to-Modify-the-Entire-Page.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Use jQuery to Modify the Entire Page
-jQuery can target the body element as well.
-
-Here's how we would make the entire body fade out: `$('body').addClass('animated fadeOut');`
diff --git a/Waypoint-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md b/Waypoint-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md
deleted file mode 100644
index 37d3a99..0000000
--- a/Waypoint-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Use the Bootstrap Grid to Put Elements Side By Side
-Bootstrap uses a responsive grid system that makes it easier to put elements into rows and tell each element's relative width.
-
-![Bootstrap 12 column grid layout](https://www.evernote.com/shard/s116/sh/f0944d97-08b8-4615-8273-a327bf41fb05/de1a3acbceef89ae/deep/0/)
-
-Note that in this illustration, the `col-md-_` class is being used. Here, md means medium, and _ is a number specifying how many columns wide the element should be. In this case, the column width of an element on a medium-sized screen, such as a laptop, is being specified.
-
-```
-<div class="row">
-
-  <div class="col-xs-4"><button class="btn btn-block btn-primary">Like</button></div>
-  <div class="col-xs-4"><button class="btn btn-block btn-info">Info</button></div>
-  <div class="col-xs-4"><button class="btn btn-block btn-danger">Delete</button></div>
-
-</div>
-```
diff --git a/Waypoint-Use-the-Javascript-Console.md b/Waypoint-Use-the-Javascript-Console.md
deleted file mode 100644
index 68fc262..0000000
--- a/Waypoint-Use-the-Javascript-Console.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Both Chrome and Firefox have excellent JavaScript consoles, also known as DevTools, for debugging your JavaScript.
-
-You can find Developer tools in your Chrome's menu or Web Console in FireFox's menu. If you're using a different browser, or a mobile phone, we strongly recommend switching to desktop Firefox or Chrome.
-
-You can also use [https://repl.it/](https://repl.it/) to run code online.
-
-This is how you print to the console: `console.log('Hello world!')`
\ No newline at end of file
diff --git a/Waypoint-Using-Objects-For-Lookups.md b/Waypoint-Using-Objects-For-Lookups.md
deleted file mode 100644
index 104d06f..0000000
--- a/Waypoint-Using-Objects-For-Lookups.md
+++ /dev/null
@@ -1,20 +0,0 @@
-#Waypoint: Using Objects for Lookups
-
-Objects can be thought of as a key/value storage, like a dictionary. If you have tabular data, you can use an object to "lookup" values rather than a `switch` statement or an `if/else` chain. This is most useful when you know that your input data is limited to a certain range.
-
-Here is an example of a simple reverse alphabet lookup:
-
-```js
-var alpha = {
-  1:"Z",
-  2:"Y",
-  3:"X",
-  4:"W",
-  ...
-  24:"C",
-  25:"B",
-  26:"A"
-};
-alpha[2]; // "Y"
-alpha[24]; // "C"
-```
\ No newline at end of file
diff --git a/Waypoint-Using-typeof.md b/Waypoint-Using-typeof.md
deleted file mode 100644
index ffa5664..0000000
--- a/Waypoint-Using-typeof.md
+++ /dev/null
@@ -1,13 +0,0 @@
-You can use `typeof` to check the `data structure`, or type, of a variable.
-
-Note that in JavaScript, arrays are technically a type of object.
-
-```js
-console.log(typeof(""));
-
-console.log(typeof(0));
-
-console.log(typeof([]));
-
-console.log(typeof({}));
-```
\ No newline at end of file
diff --git a/Waypoint-Warn-your-Users-of-a-Dangerous-Action.md b/Waypoint-Warn-your-Users-of-a-Dangerous-Action.md
deleted file mode 100644
index 8fe9795..0000000
--- a/Waypoint-Warn-your-Users-of-a-Dangerous-Action.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Warn your Users of a Dangerous Action
-The `btn-danger` class is the button color you'll use to notify users that the button performs a destructive action, such as deleting a cat photo. Note that these buttons still need the `btn` and `btn-block` classes.
-
-`<button class="btn btn-block btn-danger">Delete</button>`
diff --git a/Waypoint-Write-Reusable-JavaScript-with-Functions.md b/Waypoint-Write-Reusable-JavaScript-with-Functions.md
deleted file mode 100644
index 9ba5977..0000000
--- a/Waypoint-Write-Reusable-JavaScript-with-Functions.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Write Reusable JavaScript with Functions
-
-In JavaScript, we can divide up our code into reusable parts called functions.
-
-Here's an example of a function:
-
-```js
-
-function functionName() {
-  console.log("Hello World");
-}
-```
-
-You can `call` or `invoke` this function by using its name followed by parentheses, like this:
-
-`functionName();`
-
-Each time the function is called it will print out the message "Hello World" on the dev console. All of the code between the curly braces will be executed every time the function is called.
-
-Here is another example:
-
-```js
-function otherFunctionName (a, b) {
-	return(a + b);
-}
-```
-
-We can `call` or `invoke` our function like this:
-
-`otherFunctionName(1,2);`
- 
-and it will run and return its return value to us.
diff --git a/What-the-style-guide-for-Algorithms-is.md b/What-the-style-guide-for-Algorithms-is.md
new file mode 100644
index 0000000..6a75953
--- /dev/null
+++ b/What-the-style-guide-for-Algorithms-is.md
@@ -0,0 +1,15 @@
+Writing Bonfire challenges is a great way to exercise your own problem solving and testing abilities. Follow this process closely to maximize the chances of us accepting your bonfire.
+
+- Fork the Free Code Camp repository and open `seed_data/bonfires.json` to become familiar with the format of our bonfires.
+- Regardless of your bonfire's difficulty, put it as the last bonfire in the JSON file. Change one of the numbers in the ID to ensure that your bonfire has a unique ID.
+- In the terminal, run `node seed_data/seed.js`. Run `gulp`. You should be able to navigate to your new bonfire in the challenge map. Whenever you make a change to bonfire.json, you'll need to reseed in order to see these changes in the browser.
+- Solve your own Bonfire. Confirm that your tests work as expected and that your instructions are sufficiently clear.
+- Submit a pull request to Free Code Camp's Staging branch and in the pull request body, link to a gist that has your algorithmic solution.
+
+Here is a description of each of the Bonfires' fields.
+- Name - The name of your challenge. It's OK for this to be humorous but it must be brief and relevant to the task.
+- Difficulty - Attempt to rate difficulty compared against existing bonfire challenges. A good proxy for the difficulty of a bonfire is how long it takes you to solve it. For every 15 minutes it takes, increase the difficulty. For example, a one-hour bonfire should probably be a 4.
+- Description- Separate paragraphs with a line break. Only the first paragraph is visible prior to a user before they click the the 'More information' button. All necessary information must be included in the first paragraph. Write this first paragraph as succinctly as possible. Subsequent paragraphs should offer hints or details if needed. If your subject matter warrants deeper understanding, you may link to Wikipedia.
+- Challenge Seed - This is where you set up what will be in the editor when the camper starts the bonfire.
+- Tests - These tests are what bring your challenge to life. Without them, we cannot confirm the accuracy of a user's submitted answer. Choose your tests wisely. Bonfire tests are written using the Chai.js assertion library. Please use the should and expect syntax for end user readability. As an example of what not do to, many of the original Bonfire challenges are written with assert syntax and many of the test cases are difficult to read. If your bonfire question has a lot of edge cases, you will need to write many tests for full coverage. If you find yourself writing more tests than you desire, you may consider simplifying the requirements of your bonfire challenge. For difficulty level 1 through 3, you will generally only need 2 to 4 tests.
+- MDNlinks- Take a look at `seed_data/bonfireMDNlinks.js`. If any of these concepts are relevant to your bonfire, be sure to include them. If you know of an MDN article that isn't linked here, you can add it to the bonfireMDNlinks.js file before adding it to your bonfire.
\ No newline at end of file
diff --git a/What-the-style-guide-for-Bonfires-is.md b/What-the-style-guide-for-Bonfires-is.md
deleted file mode 100644
index 6a75953..0000000
--- a/What-the-style-guide-for-Bonfires-is.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Writing Bonfire challenges is a great way to exercise your own problem solving and testing abilities. Follow this process closely to maximize the chances of us accepting your bonfire.
-
-- Fork the Free Code Camp repository and open `seed_data/bonfires.json` to become familiar with the format of our bonfires.
-- Regardless of your bonfire's difficulty, put it as the last bonfire in the JSON file. Change one of the numbers in the ID to ensure that your bonfire has a unique ID.
-- In the terminal, run `node seed_data/seed.js`. Run `gulp`. You should be able to navigate to your new bonfire in the challenge map. Whenever you make a change to bonfire.json, you'll need to reseed in order to see these changes in the browser.
-- Solve your own Bonfire. Confirm that your tests work as expected and that your instructions are sufficiently clear.
-- Submit a pull request to Free Code Camp's Staging branch and in the pull request body, link to a gist that has your algorithmic solution.
-
-Here is a description of each of the Bonfires' fields.
-- Name - The name of your challenge. It's OK for this to be humorous but it must be brief and relevant to the task.
-- Difficulty - Attempt to rate difficulty compared against existing bonfire challenges. A good proxy for the difficulty of a bonfire is how long it takes you to solve it. For every 15 minutes it takes, increase the difficulty. For example, a one-hour bonfire should probably be a 4.
-- Description- Separate paragraphs with a line break. Only the first paragraph is visible prior to a user before they click the the 'More information' button. All necessary information must be included in the first paragraph. Write this first paragraph as succinctly as possible. Subsequent paragraphs should offer hints or details if needed. If your subject matter warrants deeper understanding, you may link to Wikipedia.
-- Challenge Seed - This is where you set up what will be in the editor when the camper starts the bonfire.
-- Tests - These tests are what bring your challenge to life. Without them, we cannot confirm the accuracy of a user's submitted answer. Choose your tests wisely. Bonfire tests are written using the Chai.js assertion library. Please use the should and expect syntax for end user readability. As an example of what not do to, many of the original Bonfire challenges are written with assert syntax and many of the test cases are difficult to read. If your bonfire question has a lot of edge cases, you will need to write many tests for full coverage. If you find yourself writing more tests than you desire, you may consider simplifying the requirements of your bonfire challenge. For difficulty level 1 through 3, you will generally only need 2 to 4 tests.
-- MDNlinks- Take a look at `seed_data/bonfireMDNlinks.js`. If any of these concepts are relevant to your bonfire, be sure to include them. If you know of an MDN article that isn't linked here, you can add it to the bonfireMDNlinks.js file before adding it to your bonfire.
\ No newline at end of file
diff --git a/Zipline-Use-the-Twitchtv-JSON-API.md b/Zipline-Use-the-Twitchtv-JSON-API.md
deleted file mode 100644
index 6f01414..0000000
--- a/Zipline-Use-the-Twitchtv-JSON-API.md
+++ /dev/null
@@ -1,19 +0,0 @@
-If you're trying to tackle this challenge with jQuery's `$.getJSON()` method, chances are you'll get an error message concerning Cross-Origin Resource Sharing (CORS).
-
-The easiest way to resolve this is to use jQuery's JSONP capabilities. From the Twitch API's [readme page](https://github.com/justintv/Twitch-API#json-p):
-
-> All API methods support JSON-P by providing a callback parameter with the request.
-
-Also the [jQuery documentation](http://api.jquery.com/jQuery.getJSON/) states:
-
-> If the URL includes the string "callback=?" (or similar, as defined by the server-side API), the request is treated as JSONP instead.
-
-Here's an example call to fetch Free Code Camp's Twitch channel data:
-
-```js
-$.getJSON('https://api.twitch.tv/kraken/streams/freecodecamp?callback=?', function(data) {
-  console.log(data);
-});
-```
-
-JSONP is considered insecure [according to Wikipedia](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing#CORS_vs_JSONP), but should be sufficient for our purposes. For a detailed discussion on Twitch's CORS restriction, please read [issue #133](https://github.com/justintv/Twitch-API/issues/133) on the Twitch-API repository.
\ No newline at end of file
diff --git a/botideas.md b/botideas.md
deleted file mode 100644
index 0b97397..0000000
--- a/botideas.md
+++ /dev/null
@@ -1,6 +0,0 @@
-If you have ideas or feature requests for the bot, you can add them to this page.
-Also come hang out in https://gitter.im/camperbot/devteam
-
-- XKCD comic feed  
-show comics inside the feed! 
-from @saintpeter
diff --git a/botpreso.md b/botpreso.md
deleted file mode 100644
index 1b1daaf..0000000
--- a/botpreso.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# FCC chatbot **CamperBot**
-Now in development. First release today.
-
-to get started:
-# bot help
-
-To talk with the dev team about new features:
-# [https://gitter.im/camperbot/testing](https://gitter.im/camperbot/testing)
-
diff --git a/good-code.md b/good-code.md
deleted file mode 100644
index 871859f..0000000
--- a/good-code.md
+++ /dev/null
@@ -1,30 +0,0 @@
-`/* C'est la premiere fois que j'utilise l'argument object. quel drole de machin.Dans une prochaine etape j'essaierai de trouver comment reussir avec un filtre. */
-
-
-
-
-
-function strainer(arra, liste) {
-    for (i = arra.length; i >= 0; i --){
-        var item = arra[i];
-        for (j = liste.length - 1; j >= 0; j --) {
-            var  elemt = liste[j];
-            if (item == elemt) {
-                 arra.splice(i, 1);
-            }
-        }
-   }
-  return arra;
-}
-function destroyer(arr) {
-  var elenco = Array.prototype.slice.call(arguments);
-
-  liste = elenco.slice(1, elenco.length);
-
-
-  // Remove all the values
- return strainer(arr, liste); 
-}
-destroyer([1, 2, 3, 1, 2, 3], 2, 3, "");
-
-`
\ No newline at end of file
diff --git a/npm-debug.log b/npm-debug.log
new file mode 100644
index 0000000..3767ed8
--- /dev/null
+++ b/npm-debug.log
@@ -0,0 +1,85 @@
+0 info it worked if it ends with ok
+1 verbose cli [ 'd:\\Program Files\\nodejs\\node.exe',
+1 verbose cli   'd:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
+1 verbose cli   'install',
+1 verbose cli   'gatsby-cli',
+1 verbose cli   '-g' ]
+2 info using npm@2.14.7
+3 info using node@v4.2.2
+4 verbose install initial load of C:\Users\Rex\AppData\Roaming\npm\package.json
+5 verbose readDependencies loading dependencies from C:\Users\Rex\AppData\Roaming\npm\package.json
+6 silly cache add args [ 'gatsby-cli', null ]
+7 verbose cache add spec gatsby-cli
+8 silly cache add parsed spec Result {
+8 silly cache add   raw: 'gatsby-cli',
+8 silly cache add   scope: null,
+8 silly cache add   name: 'gatsby-cli',
+8 silly cache add   rawSpec: '',
+8 silly cache add   spec: '*',
+8 silly cache add   type: 'range' }
+9 silly addNamed gatsby-cli@*
+10 verbose addNamed "*" is a valid semver range for gatsby-cli
+11 silly addNameRange { name: 'gatsby-cli', range: '*', hasData: false }
+12 silly mapToRegistry name gatsby-cli
+13 silly mapToRegistry using default registry
+14 silly mapToRegistry registry https://registry.npmjs.org/
+15 silly mapToRegistry uri https://registry.npmjs.org/gatsby-cli
+16 verbose addNameRange registry:https://registry.npmjs.org/gatsby-cli not in flight; fetching
+17 verbose request uri https://registry.npmjs.org/gatsby-cli
+18 verbose request no auth needed
+19 info attempt registry request try #1 at 8:03:22 PM
+20 verbose request id 4a2cf26426b97b9f
+21 http request GET https://registry.npmjs.org/gatsby-cli
+22 http 404 https://registry.npmjs.org/gatsby-cli
+23 verbose headers { 'content-type': 'application/json',
+23 verbose headers   'cache-control': 'max-age=0',
+23 verbose headers   'content-length': '2',
+23 verbose headers   'accept-ranges': 'bytes',
+23 verbose headers   date: 'Sun, 06 Dec 2015 04:03:24 GMT',
+23 verbose headers   via: '1.1 varnish',
+23 verbose headers   age: '0',
+23 verbose headers   connection: 'keep-alive',
+23 verbose headers   'x-served-by': 'cache-lax1432-LAX',
+23 verbose headers   'x-cache': 'MISS',
+23 verbose headers   'x-cache-hits': '0',
+23 verbose headers   'x-timer': 'S1449374603.909664,VS0,VE90' }
+24 silly get cb [ 404,
+24 silly get   { 'content-type': 'application/json',
+24 silly get     'cache-control': 'max-age=0',
+24 silly get     'content-length': '2',
+24 silly get     'accept-ranges': 'bytes',
+24 silly get     date: 'Sun, 06 Dec 2015 04:03:24 GMT',
+24 silly get     via: '1.1 varnish',
+24 silly get     age: '0',
+24 silly get     connection: 'keep-alive',
+24 silly get     'x-served-by': 'cache-lax1432-LAX',
+24 silly get     'x-cache': 'MISS',
+24 silly get     'x-cache-hits': '0',
+24 silly get     'x-timer': 'S1449374603.909664,VS0,VE90' } ]
+25 verbose stack Error: Registry returned 404 for GET on https://registry.npmjs.org/gatsby-cli
+25 verbose stack     at makeError (d:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:264:12)
+25 verbose stack     at CachingRegistryClient.<anonymous> (d:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:242:14)
+25 verbose stack     at Request._callback (d:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:172:14)
+25 verbose stack     at Request.self.callback (d:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:198:22)
+25 verbose stack     at emitTwo (events.js:87:13)
+25 verbose stack     at Request.emit (events.js:172:7)
+25 verbose stack     at Request.<anonymous> (d:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:1063:14)
+25 verbose stack     at emitOne (events.js:82:20)
+25 verbose stack     at Request.emit (events.js:169:7)
+25 verbose stack     at IncomingMessage.<anonymous> (d:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:1009:12)
+26 verbose statusCode 404
+27 verbose pkgid gatsby-cli
+28 verbose cwd d:\mean\wiki
+29 error Windows_NT 10.0.10240
+30 error argv "d:\\Program Files\\nodejs\\node.exe" "d:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "gatsby-cli" "-g"
+31 error node v4.2.2
+32 error npm  v2.14.7
+33 error code E404
+34 error 404 Registry returned 404 for GET on https://registry.npmjs.org/gatsby-cli
+34 error 404
+34 error 404 'gatsby-cli' is not in the npm registry.
+34 error 404 You should bug the author to publish it (or use the name yourself!)
+34 error 404
+34 error 404 Note that you can also install from a
+34 error 404 tarball, folder, http url, or git url.
+35 verbose exit [ 1, true ]
diff --git a/rename-wiki.bat b/rename-wiki.bat
new file mode 100644
index 0000000..89b0d29
--- /dev/null
+++ b/rename-wiki.bat
@@ -0,0 +1,105 @@
+git mv "Waypoint-Manipulate-Arrays-With-push().md" "Challenge-Manipulate-Arrays-With-push().md"
+git mv "Waypoint-Manipulate-Arrays-With-shift().md" "Challenge-Manipulate-Arrays-With-shift().md"
+git mv "Waypoint-Manipulate-Arrays-With-unshift().md" "Challenge-Manipulate-Arrays-With-unshift().md"
+git mv "Waypoint-Manipulate-JavaScript-Objects.md" "Challenge-Manipulate-JavaScript-Objects.md"
+git mv "Waypoint-Modify-Array-Data-With-Indexes.md" "Challenge-Modify-Array-Data-With-Indexes.md"
+git mv "Waypoint-Multiple-Identical-Options-In-Switch-Statements.md" "Challenge-Multiple-Identical-Options-In-Switch-Statements.md"
+git mv "Waypoint-Multiply-Two-Numbers-with-JavaScript.md" "Challenge-Multiply-Two-Numbers-with-JavaScript.md"
+git mv "Waypoint-Nest-an-Anchor-Element-within-a-Paragraph.md" "Challenge-Nest-an-Anchor-Element-within-a-Paragraph.md"
+git mv "Waypoint-Nest-Many-Elements-within-a-Single-Div-Element.md" "Challenge-Nest-Many-Elements-within-a-Single-Div-Element.md"
+git mv "Waypoint-Nest-one-Array-within-Another-Array.md" "Challenge-Nest-one-Array-within-Another-Array.md"
+git mv "Waypoint-Nesting-For-Loops.md" "Challenge-Nesting-For-Loops.md"
+git mv "Waypoint-Override-All-Other-Styles-by-using-Important.md" "Challenge-Override-All-Other-Styles-by-using-Important.md"
+git mv "Waypoint-Override-Class-Declarations-by-Styling-ID-Attributes.md" "Challenge-Override-Class-Declarations-by-Styling-ID-Attributes.md"
+git mv "Waypoint-Override-Class-Declarations-with-Inline-Styles.md" "Challenge-Override-Class-Declarations-with-Inline-Styles.md"
+git mv "Waypoint-Override-Styles-in-Subsequent-CSS.md" "Challenge-Override-Styles-in-Subsequent-CSS.md"
+git mv "Waypoint-Passing-Values-To-Functions-With-Arguments.md" "Challenge-Passing-Values-To-Functions-With-Arguments.md"
+git mv "Waypoint-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md" "Challenge-Perform-Arithmetic-Operations-on-Decimals-with-JavaScript.md"
+git mv "Waypoint-Prefilter-JSON.md" "Challenge-Prefilter-JSON.md"
+git mv "Waypoint-Prioritize-One-Style-Over-Another.md" "Challenge-Prioritize-One-Style-Over-Another.md"
+git mv "Waypoint-Quoting-Strings-with-Single-Quotes.md" "Challenge-Quoting-Strings-with-Single-Quotes.md"
+git mv "Waypoint-Remove-an-Element-Using-jQuery.md" "Challenge-Remove-an-Element-Using-jQuery.md"
+git mv "Waypoint-Remove-Classes-from-an-element-with-jQuery.md" "Challenge-Remove-Classes-from-an-element-with-jQuery.md"
+git mv "Waypoint-Render-Images-from-Data-Sources.md" "Challenge-Render-Images-from-Data-Sources.md"
+git mv "Waypoint-Replacing-If-Else-Chains-With-Switch.md" "Challenge-Replacing-If-Else-Chains-With-Switch.md"
+git mv "Waypoint-Responsively-Style-Checkboxes.md" "Challenge-Responsively-Style-Checkboxes.md"
+git mv "Waypoint-Responsively-Style-Radio-Buttons.md" "Challenge-Responsively-Style-Radio-Buttons.md"
+git mv "Waypoint-Return-A-Value-From-A-Function-With-Return.md" "Challenge-Return-A-Value-From-A-Function-With-Return.md"
+git mv "Waypoint-Return-Early-Pattern-For-Functions.md" "Challenge-Return-Early-Pattern-For-Functions.md"
+git mv "Waypoint-Returning-Boolean-Values-From-Functions.md" "Challenge-Returning-Boolean-Values-From-Functions.md"
+git mv "Waypoint-Reverse-Arrays-with-reverse.md" "Challenge-Reverse-Arrays-with-reverse.md"
+git mv "Waypoint-Save-your-Code-Revisions-Forever-with-Git.md" "Challenge-Save-your-Code-Revisions-Forever-with-Git.md"
+git mv "Waypoint-Say-Hello-to-HTML-Elements.md" "Challenge-Say-Hello-to-HTML-Elements.md"
+git mv "Waypoint-Selecting-From-Many-Options-With-Switch-Statements.md" "Challenge-Selecting-From-Many-Options-With-Switch-Statements.md"
+git mv "Waypoint-Set-the-Font-Family-of-an-Element.md" "Challenge-Set-the-Font-Family-of-an-Element.md"
+git mv "Waypoint-Set-the-ID-of-an-Element.md" "Challenge-Set-the-ID-of-an-Element.md"
+git mv "Waypoint-Sift-through-Text-with-Regular-Expressions.md" "Challenge-Sift-through-Text-with-Regular-Expressions.md"
+git mv "Waypoint-Size-your-Images.md" "Challenge-Size-your-Images.md"
+git mv "Waypoint-Sort-Arrays-with-sort.md" "Challenge-Sort-Arrays-with-sort.md"
+git mv "Waypoint-Specify-How-Fonts-Should-Degrade.md" "Challenge-Specify-How-Fonts-Should-Degrade.md"
+git mv "Waypoint-Split-Strings-with-split.md" "Challenge-Split-Strings-with-split.md"
+git mv "Waypoint-Split-your-Bootstrap-Row.md" "Challenge-Split-your-Bootstrap-Row.md"
+git mv "Waypoint-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md" "Challenge-Store-Multiple-Values-in-one-Variable-using-JavaScript-Arrays.md"
+git mv "Waypoint-Storing-Values-with-the-Equal-Operator.md" "Challenge-Storing-Values-with-the-Equal-Operator.md"
+git mv "Waypoint-Style-Multiple-Elements-with-a-CSS-Class.md" "Challenge-Style-Multiple-Elements-with-a-CSS-Class.md"
+git mv "Waypoint-Style-Text-Inputs-as-Form-Controls.md" "Challenge-Style-Text-Inputs-as-Form-Controls.md"
+git mv "Waypoint-Style-the-HTML-Body-Element.md" "Challenge-Style-the-HTML-Body-Element.md"
+git mv "Waypoint-Subtract-One-Number-from-Another-with-JavaScript.md" "Challenge-Subtract-One-Number-from-Another-with-JavaScript.md"
+git mv "Waypoint-Target-a-Specific-Child-of-an-Element-Using-jQuery.md" "Challenge-Target-a-Specific-Child-of-an-Element-Using-jQuery.md"
+git mv "Waypoint-Target-Elements-by-Class-Using-jQuery.md" "Challenge-Target-Elements-by-Class-Using-jQuery.md"
+git mv "Waypoint-Target-Elements-by-ID-Using-jQuery.md" "Challenge-Target-Elements-by-ID-Using-jQuery.md"
+git mv "Waypoint-Target-Even-Numbered-Elements-Using-jQuery.md" "Challenge-Target-Even-Numbered-Elements-Using-jQuery.md"
+git mv "Waypoint-Target-HTML-Elements-with-Selectors-Using-jQuery.md" "Challenge-Target-HTML-Elements-with-Selectors-Using-jQuery.md"
+git mv "Waypoint-Target-the-Children-of-an-Element-Using-jQuery.md" "Challenge-Target-the-Children-of-an-Element-Using-jQuery.md"
+git mv "Waypoint-Target-the-Parent-of-an-Element-Using-jQuery.md" "Challenge-Target-the-Parent-of-an-Element-Using-jQuery.md"
+git mv "Waypoint-Target-the-same-element-with-multiple-jQuery-Selectors.md" "Challenge-Target-the-same-element-with-multiple-jQuery-Selectors.md"
+git mv "Waypoint-Taste-the-Bootstrap-Button-Color-Rainbow.md" "Challenge-Taste-the-Bootstrap-Button-Color-Rainbow.md"
+git mv "Waypoint-Testing-Objects-For-Properties.md" "Challenge-Testing-Objects-For-Properties.md"
+git mv "Waypoint-Trigger-Click Events-with-jQuery.md" "Challenge-Trigger-Click Events-with-jQuery.md"
+git mv "Waypoint-Turn-an-Image-into-a-Link.md" "Challenge-Turn-an-Image-into-a-Link.md"
+git mv "Waypoint-Uncomment-HTML.md" "Challenge-Uncomment-HTML.md"
+git mv "Waypoint-Understand-Boolean-Values.md" "Challenge-Understand-Boolean-Values.md"
+git mv "Waypoint-Understand-String-Immutability.md" "Challenge-Understand-String-Immutability.md"
+git mv "Waypoint-Understanding-Case-Sensitivity-in-Variables.md" "Challenge-Understanding-Case-Sensitivity-in-Variables.md"
+git mv "Waypoint-Understanding-Uninitialized-Variables.md" "Challenge-Understanding-Uninitialized-Variables.md"
+git mv "Waypoint-Updating-Object-Properties.md" "Challenge-Updating-Object-Properties.md"
+git mv "Waypoint-Use-a-CSS-Class-to-Style-an-Element.md" "Challenge-Use-a-CSS-Class-to-Style-an-Element.md"
+git mv "Waypoint-Use-Abbreviated-Hex-Code.md" "Challenge-Use-Abbreviated-Hex-Code.md"
+git mv "Waypoint-Use-an-ID-Attribute-to-Style-an-Element.md" "Challenge-Use-an-ID-Attribute-to-Style-an-Element.md"
+git mv "Waypoint-Use-appendTo-to-Move-Elements-with-jQuery.md" "Challenge-Use-appendTo-to-Move-Elements-with-jQuery.md"
+git mv "Waypoint-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md" "Challenge-Use-Bracket-Notation-to-Find-the-First-Character-in-a-String.md"
+git mv "Waypoint-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md" "Challenge-Use-Bracket-Notation-to-Find-the-Last-Character-in-a-String.md"
+git mv "Waypoint-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md" "Challenge-Use-Bracket-Notation-to-Find-the-Nth-Character-in-a-String.md"
+git mv "Waypoint-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md" "Challenge-Use-Bracket-Notation-to-Find-the-Nth-to-Last-Character-in-a-String.md"
+git mv "Waypoint-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md" "Challenge-Use-Clockwise-Notation-to-Specify-the-Margin-of-an-Element.md"
+git mv "Waypoint-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md" "Challenge-Use-Clockwise-Notation-to-Specify-the-Padding-of-an-Element.md"
+git mv "Waypoint-Use-Comments-to-Clarify-Code.md" "Challenge-Use-Comments-to-Clarify-Code.md"
+git mv "Waypoint-Use-Conditional-Logic-with-If-Else-Statements.md" "Challenge-Use-Conditional-Logic-with-If-Else-Statements.md"
+git mv "Waypoint-Use-CSS-Selectors-to-Style-Elements.md" "Challenge-Use-CSS-Selectors-to-Style-Elements.md"
+git mv "Waypoint-Use-Hex-Code-for-Specific-Colors.md" "Challenge-Use-Hex-Code-for-Specific-Colors.md"
+git mv "Waypoint-Use-Hex-Code-for-Specific-Shades-of-Gray.md" "Challenge-Use-Hex-Code-for-Specific-Shades-of-Gray.md"
+git mv "Waypoint-Use-Hex-Code-to-Color-Elements-Blue.md" "Challenge-Use-Hex-Code-to-Color-Elements-Blue.md"
+git mv "Waypoint-Use-Hex-Code-to-Color-Elements-Gray.md" "Challenge-Use-Hex-Code-to-Color-Elements-Gray.md"
+git mv "Waypoint-Use-Hex-Code-to-Color-Elements-Green.md" "Challenge-Use-Hex-Code-to-Color-Elements-Green.md"
+git mv "Waypoint-Use-Hex-Code-to-Color-Elements-Red.md" "Challenge-Use-Hex-Code-to-Color-Elements-Red.md"
+git mv "Waypoint-Use-Hex-Code-to-Color-Elements-White.md" "Challenge-Use-Hex-Code-to-Color-Elements-White.md"
+git mv "Waypoint-Use-Hex-Code-to-Mix-Colors.md" "Challenge-Use-Hex-Code-to-Mix-Colors.md"
+git mv "Waypoint-Use-HTML5-to-Require-a-Field.md" "Challenge-Use-HTML5-to-Require-a-Field.md"
+git mv "Waypoint-Use-jQuery-to-Modify-the-Entire-Page.md" "Challenge-Use-jQuery-to-Modify-the-Entire-Page.md"
+git mv "Waypoint-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md" "Challenge-Use-Responsive-Design-with-Bootstrap-Fluid-Containers.md"
+git mv "Waypoint-Use-RGB-to-Color-Elements-Blue.md" "Challenge-Use-RGB-to-Color-Elements-Blue.md"
+git mv "Waypoint-Use-RGB-to-Color-Elements-Gray.md" "Challenge-Use-RGB-to-Color-Elements-Gray.md"
+git mv "Waypoint-Use-RGB-to-Color-Elements-Green.md" "Challenge-Use-RGB-to-Color-Elements-Green.md"
+git mv "Waypoint-Use-RGB-to-Color-Elements-Red.md" "Challenge-Use-RGB-to-Color-Elements-Red.md"
+git mv "Waypoint-Use-RGB-to-Color-Elements-White.md" "Challenge-Use-RGB-to-Color-Elements-White.md"
+git mv "Waypoint-Use-RGB-to-Mix-Colors.md" "Challenge-Use-RGB-to-Mix-Colors.md"
+git mv "Waypoint-Use-RGB-values-to-Color-Elements.md" "Challenge-Use-RGB-values-to-Color-Elements.md"
+git mv "Waypoint-Use-Spans-for-Inline-Elements.md" "Challenge-Use-Spans-for-Inline-Elements.md"
+git mv "Waypoint-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md" "Challenge-Use-the-Bootstrap-Grid-to-Put-Elements-Side-By-Side.md"
+git mv "Waypoint-Use-the-Javascript-Console.md" "Challenge-Use-the-Javascript-Console.md"
+git mv "Waypoint-Using-Objects-For-Lookups.md" "Challenge-Using-Objects-For-Lookups.md"
+git mv "Waypoint-Using-typeof.md" "Challenge-Using-typeof.md"
+git mv "Waypoint-Warn-your-Users-of-a-Dangerous-Action.md" "Challenge-Warn-your-Users-of-a-Dangerous-Action.md"
+git mv "Waypoint-Write-Reusable-JavaScript-with-Functions.md" "Challenge-Write-Reusable-JavaScript-with-Functions.md"
+git mv "What-the-style-guide-for-Bonfires-is.md" "What-the-style-guide-for-Algorithms-is.md"
+git mv "Zipline-Use-the-Twitchtv-JSON-API.md" "Front-End-Project-Use-the-Twitchtv-JSON-API.md"
diff --git a/triphop.md b/triphop.md
deleted file mode 100644
index 21e3d97..0000000
--- a/triphop.md
+++ /dev/null
@@ -1,3 +0,0 @@
-https://soundcloud.com/nasostsolakis/sets/triphop_electronic
-
-embedding a soundcloud track in the wiki!
\ No newline at end of file
diff --git a/video.md b/video.md
deleted file mode 100644
index 861eb4a..0000000
--- a/video.md
+++ /dev/null
@@ -1,4 +0,0 @@
-demoing inline video clips
-
-https://www.youtube.com/watch?v=BMUiFMZr7vk
-
