Update generics
Begin moving to generic category
Closer to final
Add license, add when:else support and returnWhen:else support