Implementing the entry point