Cleaned up argument and testing framework