require abstract store