functions incomplete && cycles incomplete