many many edge-cases