Fix #14: add implementation