Added annotation processor properly
Pulled API out to a separate file