Added some comments to explain method logic / specify areas to refactor