- Use sealed class for state - Minor changes (cherry picked from commit 02708787483b6dee9d42e39c984ed8c4beaacb40)