encapsulation and constructors