1. A method comprising: generating an abstract representation of a computer code, in a form of a code model; recording manipulations to the computer code applied by a user to the code model; calculating a series of refactorings in the computer code that represents the recorded manipulation; and carrying out the refactorings within the computer code, wherein at least one of: the applying, the recording, the calculating, and the carrying out, is executed by a processor, wherein in a case that the refactorings require splitting of low level software elements within the computer code, the carrying out of the refactorings further comprises: applying code analysis to detect all software elements of the computer code relevant to the refactorings; separating the detected software elements; creating a new component configured to contain a new code comprising the separated software elements; and generating new members in the new component and moving the new code to the generated new members.