Primary key

Allows specifying a primary key. Please review and comment.
As every SObject subclass gets the field :id for free, when you specify a primary key that field :id has to be deleted and I couldn't find a better way to do that than doing it on the primary key method (acts as setter and getter). any better solution for that issue ?
like this?
~~~ ruby
def primary_key field = :id
  delete_field :id if field != :id
  @primary_key ||= field
end
~~~