add support for non-public fields

Allow users to assign whichever visibility they see fit to fields
annotated as options. Especially allow for the usage of private fields.