added poltergeist, refactored