This is like 60% done, still need to implement a few more things in each respective configuration type.