Source is now split into three files