+ applicative
+ data type
reorganize structure