restructured into maven modules for sanities sake