def get_provides(exists):
"""
Return list of available objects
"""
key_exists = _expand_exists(exists)
superset = None
for key in key_exists:
if superset is None:
superset = PROVIDES[key]
superset = superset.union(PROVIDES[key])
available = []
for skey in superset:
b = props.NewBuilding(*skey)
if not get_requires(b, exists) and not skey in key_exists:
available.append(skey)
return available