common abstracts and interfaces to help build restful application