provided better abstractions, added special value handling & symbols