updated pretty much everything to be more reusable