add version info to footer
separation api and implimentation
hierarchy refactoring