Merging changes to develop from feature branches

Re-factored models, and modified tests