introduce two modes: normal and demo