almost done...
functionality done