refactored GenericAccount class