Advanced Solidity and Design Patterns