Groups break if they don't make matches. Added lots of code documentation.