Added simple testing using Selenium for functional specification.
Now the code uses the trait instead of the concrete implementations for some parts of the system in order to facilitate testing.