add main, add optional arg features