Cleaned up. Per-attribute setter functions are now possible, so validation has become easier