Learning puppet