#9, convert internal constants to options, change constructor signature