Moved seat functionality into its own module and class. Added tests for seat functionality as well.