recursive for these to be safe too