basic lib functionality