Added comments, added argument validation, add final to constants.