finish sample work, need test then merge