require abstract