finished most methods. need to test them now.