Seperated each implementation into its own controller