+ Utilize copy-swap idiom, miscellaneous clean-up of conditions and return values
+ Reorder, refactor comments
+ Update .gitignore to exclude .idea configs