abstract placeholder