refactored List.__init__