an alternative implementation idea