refactored background and visual stuff