Katalium Framework Page Object Model
Page Object Model (POM) is a Design Pattern for enhancing test maintenance and reducing code duplication. Please refer to here for a detailed explanation and benefits of POM.
Katalium Framework provides an abstract class   com.katalon.kata.selenium.PageTemplate with some   convenient utilities:
-      
Page objects will be initialized automatically in test classes that extends
com.katalon.kata.testng.TestTemplate. -      
waitUntilmethods which wrapsWebDriverWaitpatterns to keep the code concise. 
Here is a very simple Selenium Page (source code):
package com.katalon.kata.sample.page;
import com.katalon.kata.selenium.PageTemplate;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
public class CuraAppoinmentPage extends PageTemplate {
  @FindBy(id = "appointment")
  private WebElement divAppointment;
  @FindBy(id = "combo_facility")
  private WebElement facilitySelect;
  @FindBy(id = "txt_comment")
  private WebElement commentInput;
  @FindBy(id = "txt_visit_date")
  private WebElement visitDateInput;
  @FindBy(id = "btn-book-appointment")
  private WebElement bookAppointmentBtn;
  @FindBy(id = "radio_program_medicaid")
  private WebElement medicaidCheck;
  @FindBy(id = "radio_program_none")
  private WebElement medicareCheck;
  @FindBy(id = "txt_comment")
  private WebElement noneCheck;
  @FindBy(name = "hospital_readmission")
  private WebElement readMissionCheck;
  public boolean isOnPage() {
    try {
      log.info("Check is on appointment page.");
      return divAppointment.isDisplayed();
    } catch (Exception ex) {
      return false;
    }
  }
  public void fillAppointmentDetails(String facility, String visitDate, String comment) {
    log.info("Fill appointment details.");
    waitUntil(ExpectedConditions.elementToBeClickable(facilitySelect));
    Select facilitySelectBox = new Select(facilitySelect);
    facilitySelectBox.selectByVisibleText(facility);
    medicaidCheck.click();
    readMissionCheck.click();
    visitDateInput.sendKeys(visitDate);
    commentInput.sendKeys(comment);
    bookAppointmentBtn.click();
  }
}