scrapped a lot of stuff, began new implementation using a more abstracted design