These are a collection of smart contracts I was using when experimenting with upgradability last year.
I was experimenting with Abstract contracts; spliting the contracts into Logic and Data sections; creating a white pages of valid contracts; putting permissioning on smart contract functions and using proxy contracts