major refactor, created panel abstract classes