front-end refactor (HashListener); fetch methods separately for perf