needs: testing, proper error messages and dialogs, code cleanup, cache mechanism...