slightly modified file (comments etc)
consequently used "self" construction, moved properties to appropriate places
implemented "self' construction