added module dependencies
created abstract Layer object