uses BMP lib