main Method