I don't think we should say that every entity will have a title, description and a body. The only assumptions I'd make is that all entities will have ready only id and can be initialised with an id and hash of attributes:

```rb
module Core
  class Entity
    include ActiveModel::Validations

    attr_accessor :id
    private :id=

    validates_presence_of :id

    def initialize(id, attributes = {})
      self.id = id

      Array(attributes).each do |name, value|
        send("#{name}=", value)
      end
    end
  end
end
``