final split up and work merge