requires deck class