demo 1&2&3