First round of some files. Adding some generic structures and behavior