differentiate functions
some todos
support multiple using/const