Refactor shared functionality, add Lookup