Move validation down into Type
Remove half-working on_set event