final ver with object