Creates the architecture to easily add properties down the line