Implementing Adapter and Factory patterns for type adapting!