finished: should have full functionallity

outstanding: testing