@SuppressWarnings("unchecked") to avoid gradle complaining about the cast