refactored code so "world" logic isnt in "core"