Updated dependencies.
Updated .gitignore.
Improved code structure and readability.
Added missing file.