(may not be as performant if this is a hot path, though)