added interfaces
make it unnecessary to use argments