Beat your butter with an electric mixer or a stand mixer until it is pale and fluffy.
Add in the peanut butter and again mix for a couple of minutes until it is smooth and creamy.
Slowly add in the icing sugar with the beater on low (so as not to create a dust cloud!) Beat until everything is well mixed together.
Add in the cream cheese and mix for a minute or two until it is well combined. If you are in the UK please check above for a link on working with cream cheese if you live in the UK! It will stop your frosting from going all runny and gloopy!
Take 20 of your mini peanut butter cups and gently press them into the top of the cake at regular initials. The idea is when the cake is cut each piece will have one in the middle. I found I got 5 across and 4 down, giving me 20 equal squares for serving.
First off you will need to do a crumb layer. Take about a 3rd of your frosting and gently spread it across your cake, don't worry if it looks full of crumbs we will cover this all up.
Once that is done pop the cake in the fridge for 10 to 15 minutes to firm up that layer.
Once that is done the crumb layer will act as a barrier and you will be able to frost your cake normally. Spread the rest of the frosting evenly across your cake.
Take your remaining 10 mini peanut butter cups and cut them in half. Take them, your peanut butter m&m's and Reese's Pieces and scatter them all across the top of your cake.
Because of the frosting this cake will need to be kept in the fridge, also it cuts better when cold. But bring it back up to room temperature before serving. Kept in the fridge in an airtight container this cake keeps well up to 5 days.