cleaned up edge cases