the use of action listener