finishe basic function