fix edge case, add tests