Union types

Fixes #3