just added a function set which is easier to use for self demo