refactoring for the use of FOF