@Override
    public Object execute(Context ctx) {
        String[] args = (String[]) ctx.getValue(Context.KEY_COMMAND_LINE_ARGS);
        IOConsole c = ctx.getIoConsole();
        if(args != null){
            try{
                descriptor.setCommandArgs(args);
            }catch(RuntimeException ex){
                c.printf("%nUnable execute command: %s%n%n", ex.getMessage());
                return null;
            }
            
            // decipher args
            
            // >sysinfo -props
            if(descriptor!=null && descriptor.parameters.props){
                c.printf("%nSystem Properties");
                c.printf("%n-----------------");
                displayAllSysProperties(ctx);
                c.printf("%n%n");
            }
            
            // >sysinfo -cp [or -classpath]
            if(descriptor != null && descriptor.parameters.cp){
                RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
                c.printf("%nClasspath: %s", bean.getClassPath());
                c.printf("%nBoot Classpath: %s%n%n", bean.getBootClassPath());
            }
            
            
            // >sysinfo -mem
            if(descriptor != null && descriptor.parameters.mem){
                MemoryMXBean bean = ManagementFactory.getMemoryMXBean();
                c.printf("%nHeap Memory Usage:%n");
                c.printf("\t-Initial: %d%n", bean.getHeapMemoryUsage().getInit());
                c.printf("\t-Max: %d%n", bean.getHeapMemoryUsage().getMax());
                c.printf("\t-Committed: %d%n", bean.getHeapMemoryUsage().getCommitted());
                c.printf("\t-Used: %d", bean.getHeapMemoryUsage().getUsed());
                c.printf("%n%n");
            }

        }
        
        return null;
    }