add internal validation to avoid chaos and mayhem