I want to know how is arc implemented ? What design pattern can be used?