added new learn method