* refactor code