add seq; refactor