refactored to use page objects