ticket:13 add test
ticket:13 add implementation