the premature optimizer in me would like this to be a single allocation :)