A bunch of improvements
Better initialization interface
Refactor 'if' and 'pad' tag parsing
Extract recursive call into a separate func
Improved errors for ptr and unexported fields
Check for unexported fields beforehand
Add a couple of remarks