dealing with more edge and corner cases