created almost all aspects i would expect, need to test it all