add core class and demo