implemented learns