First I did not use lazy vals and did the initialization in the open method. But it can happen that a user overrides open() and forgets to call super.open(). In that case the code will fail with null pointer exceptions. Even I forget this at first and was wondering whether I had made a mistake.