Cast generic type to the passed class type to prevent compilation error provided by javac. Though compiles nicely on eclipse
Seperate main src directory and test src directory to their respective targets
Add java doc