add guid and implement card abstraction