stricter implementation
better insertion