mainmethod