A nit, but I've noticed there are some extra white spaces at the end of some lines before the closing tag.