shell required main func