refactor behaviors a bit