encapsulated everything