- Delay reading the properties until the first call of the getProperty method.
- Added the initializeIfNeeded method: load properties and check them if the properties field is null.
- Call the initializeIfNeeded method from the getProperty method.
- Made the checkConfiguration method static, check whether the configuration file exists, and removed the call to the System.exit method.