set successFunc correctly when branched
support assigning references to complex types
somewhat support object storage - although this is due for a big redesign