Refactoring of project structure, remove skeleton, generalize search interface

Change package structure to be more cleaner. Remove unnecessary skeleton
implementation. Search interface is now more generalized for yielding result.
This changes make code more readable.