# E4145

Cannot implement trait because it is sealed.

Sealed trait means the trait is not allowed to be implemented in other packages.
Use `pub(open)` to make the trait open to be implemented by other packages.

## Erroneous example

Suppose there is a package `a` in module `username/hello`:

`a/moon.pkg`:

```{literalinclude} /sources/error_codes/4145_error/a/moon.pkg
:language: moonbit
```

`a/a.mbt`:

```{literalinclude} /sources/error_codes/4145_error/a/a.mbt
:language: moonbit
```

While in package `b`:

`b/moon.pkg`:

```{literalinclude} /sources/error_codes/4145_error/b/moon.pkg
:language: moonbit
```

`b/b.mbt`:

```{literalinclude} /sources/error_codes/4145_error/b/b.mbt
:language: moonbit
```

## Suggestion

You can change the visibility of the trait to `pub(open)`, so that it can be
implemented by other packages.

```{literalinclude} /sources/error_codes/4145_fixed/a/a.mbt
:language: moonbit
```
