Updated with comments and superclass