basic functionality done.