Data Types as Effective Objects