generate properties can do all at once
tweak docs