refactoring fangate (factorize + respect of technical design)