Add support for enum properties & collections

Includes tests.
I should optimize this later.
v1.1