Make classes final, add copy constuctor and comments