version 3, accepts system arguments