without reference counting