Separated modules into there own files. Separated tests as well