finish the first version of funset