add Agent, Engine and Regex with units tests