returned type must be strongly typed