refactor to use interfaces and add credit cards