Serdar's design changes
modified to use relative imports for improved flexibility