account type abstraction