added new files.
move implementation to .cpp files.