refactored, broke order of operations, added arbitrary symbol support (const or var)