Use readNullable[T] instead of deprecated readOpt[T]