modified Demo & Source