base functionality done.