Abstracted away most of the copy-pasted methods. Removed 174 LOC!