modified classes accordingly
interface added