Implemented signal handlers.
Properly clean-up hidden files.
Refactored update checks into a separate thread, for better code reusability.