[IMP] Changed objects hierarchy and instantiation:
      to get a new instance, call object.create(args)
      args will be passed to your object's init function
      if there's any