major reorganization: dependencies, parser (don't use separate tokenizer)