finish the President implementation but still may need some refactoring.