init with all arguments