Moved Viewable to its own library to be implemented by classes used on server-side code.