use functional tr1