cleanup object system design, use enum for more clear debug info
specialize node for ast construction