rewritten by the criteria of pep8