more allocation trickery