Bloch surface wave applications