interface and demo