implement user data parameters and emplace_object