apply implemented