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