https://ethfans.org/posts/proxy-libraries-in-solidity