some more empty edge cases. simplified each method