some behavior implementation and refactor of Character