changed to naming convention, added interfaces