fully typed and passed tests