Implementing usecases and entities