Use AbstractEntryPoint

Using AbstractEntryPoint is preferred over implementing EntryPoint
directly.