AbstractObject: remake again :)