initial version
WIP: Applicative
WIP : refactoring