Make several tests pass. Some still need some more work