refactor(Protocols, Init): refactored init methods and custom view methods