fs2 refactor