Add functional dependencies to make everything a bit safer