In my opinion, common carrier status should be defined by functionality -- a "collection of code" which functions as infrastructure shouldn't be legally distinct from a pile of physical hardware which functions as infrastructure.
Edit: Especially since hardware can directly model software, and...