implemented in Qt