Major changes: Splited the code between different packages