automated reference counting

retain on assignment or parameter pass (callee responsibility)
release on scope exit