Solution Part II, properly tested property