add spec
protectrd
add setter
private
use trait
Rename property
rename property