interfaces as types