initial refactor to hide instance methods