refactor a bit, user methods