Separate out Arrow as a abstract class and create AsyncA class