Restructure and abstract a bit