user data should be optional and not part of the core plugin