using interfaces now