encapsulated exposed API