try to fill in semantic functions a little bit