supporting constructor semantics in the form of a function called 'init'