add some finals, reorganize