code layer seperating