added a common generic layer