Added testing, split into modules.