create method overload for setProperty to include PropertyMetadata
add property visibility