add some explanation, and basic methods.