separate parsing and tools