Convert Identifiable to interface for better reuse
Use abstract class for default implementation