modified for learn