divided to layers