Add much nicer library definition interface