Optimize and keep arity in compose

Ya, I originally did that because I was under the impression this library didn't care about context but I realize that this function probably should regardless