test separated from implementation