refactored effects to use effect class instead of string