Start rewriting everything to be more generic