An object-based language is a imperative programming language that provides a construct to encapsulate state and behavior as an object. A language that also supports inheritance or subtyping is classified as object-oriented. Even though object-oriented programming is a superset of object-based programming, some authors distinguish them by name only when it is useful to point that a given programming language lacks inheritance. Examples of strictly object-based languages – supporting an object feature but not inheritance or subtyping – are early versions of Ada, CLU, Visual Basic 6 (VB6), and Fortran 90.