workable version of all methods