added static library implementation