internal(default, visible across the app or framework)
private: visible to the class
private(set): only the class can modify it
fileprivate: visible to the file
public: visible to the outside of the framework
open: outside the framework can subclass
good practice: try private initially. remove private when it is ready to be used by other code in your app.