working background effect; still needs improvement and refactoring;