Completed the majority of functionality, just need to polish some logic.