build from lib/oop.js