moved Adaptor->Extension; refacotred Factory statics directly into Extensions and switched to abstract functions