A detailed demo