AbstractDevice now supports return types