Add License
Reorganize types
Compose fn