TODO: update license to LGPL